1.Maven
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.17</version>
</dependency>
如图,application.yml中的内容为指定了运行环境为:druid环境,这时启动项目就会去加载application-druid.yml文件。
2.添加配置application-druid.yml
- JDBC 配置
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://192.168.x.106:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 111111
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
- 连接池配置
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
- 监控配置
# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
webStatFilter:
enabled: true
# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码,localhost/monitor/druid,必须是一致的
login-username:
login-password:
- 配置filter
filter:
# 配置StatFilter
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
# 配置WallFilter
wall:
# 多条sql一起执行
config:
multi-statement-allow: true
数据库配置类
-
@ConfigurationProperties("spring.datasource.druid.master")//springboot相关属性
- 注意,参数配置在 application.properties 或 application.yml 文件中,通过 @ConfigurationProperties 注解,我们可以方便的获取这些参数值
-
@ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")
- @ConditionalOnProperty
- (prefix = “spring.datasource.druid.slave”, name = “enabled”, havingValue = “true”)
- 寻找spring.datasource.druid.slave,havingValue = “true”表示只有值为true的时候,才会执行
-
@Value("${spring.datasource.druid.initialSize}") private int initialSize;
- 可以看得value注解的使用方式:@Value("${spring.datasource.druid.initialSize}"),这个时候就会把配置文件里的spring.datasource.druid.initialSize的值赋值给变量initialSize
- 可以预测到,这是在application.yml中写了druid环境启动项目后页面的内容
-
@Bean(name = "dynamicDataSource")
- 也可以通过SpringUtils.getBean(beanName)得到
- 通过spring注入,就能在上下文得到
- 不加名字,则方法名就是bean的名字
创建数据源
@Bean//通过spring注入,就能在上下文得到
@ConfigurationProperties("spring.datasource.druid.master")//springboot相关属性
public DataSource masterDataSource(DruidProperties druidProperties)
{
DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
return druidProperties.dataSource(dataSource);
}
@Bean
@ConfigurationProperties("spring.datasource.druid.slave")
@ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")
public DataSource slaveDataSource(DruidProperties druidProperties)
{
DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
return druidProperties.dataSource(dataSource);
}
@Bean(name = "dynamicDataSource")
@Primary
public DynamicDataSource dataSource(DataSource masterDataSource)
{
Map<Object, Object> targetDataSources = new HashMap<>();
targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource);
setDataSource(targetDataSources, DataSourceType.SLAVE.name(), "slaveDataSource");
return new DynamicDataSource(masterDataSource, targetDataSources);
}