一、包引入
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>
二、YML文件配置
示例中有两个数据源。
一个是postgresql,用于业务数据存储,为默认数据源;
一个是clickhouse,用于用户请求日志记录;
# Spring配置
spring:
datasource:
# 数据源一(默认)
primary:
type: com.alibaba.druid.pool.DruidDataSource
jdbcUrl: jdbc:postgresql://192.168.1.1:8899/database
driverClassName: org.postgresql.Driver
username: root
password: root
filters: wall
# 数据源二(日志记录)
clickhouse:
driverClassName: ru.yandex.clickhouse.ClickHouseDriver
jdbcUrl: jdbc:clickhouse://192.168.1.2:8089/default?socket_timeout=300000
username: root
password: root
# 开启sql监控
druid:
# 监控配置
stat-view-servlet:
login-username: admin # 登录账号
login-password: admin # 登录密码
reset-enable: false # 重置监控页面数据
url-pattern: /druid/* # 登录页面后缀
enabled: true # 开启监控
allow: # 添加IP白名单,不写就是所有都允许
# 监控配置中的 web监控
web-stat-filter:
url-pattern: /*
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
enabled: true
三、数据源注入
使用注解的方式注入,其中默认数据源使用@Primary注解。完整代码如下:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
/**
* Created with 跳跳公司.
*
* @Author: 小皮球
* @Date: 2023/04/23/16:32
* @Description:
*/
@Configuration
public class DataSourceConfig {
@Bean
@Primary
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource.clickhouse")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
}
如果要使用第二个数据源,则使用构造方法+注解注入即可。以下为示例:
@Aspect
@Component
public class AllLogsAspect {
private final JdbcTemplate clickhouseJdbcTemplate;
/**
* 注入clickhouse数据源
*
* @param secondaryDataSource
*/
public AllLogsAspect(@Qualifier("secondaryDataSource") DataSource secondaryDataSource) {
this.clickhouseJdbcTemplate = new JdbcTemplate(secondaryDataSource);
}
}
四、Druid访问
如果开启了SpringSecurity,则需求放行“/druid/**”。
.antMatchers("/druid/**").permitAll()
输入域名:端口/上下文路径/druid/login.html,进入登录页面