除了Hikaridatasource这款SpringBoot默认的数据库连接池外,还支持其他数据库连接池,比如本篇将要先容的另一种精良的数据库连接池——阿里巴巴Durid!
为监控而生的数据库连接池,它是阿里巴巴开源平台上的一个项目,集成了SQL监控,黑名单拦截等功能,拥有强大的监控特性。通过Druid供应的监控功能,可以清楚知道连接池和SQL的事情情形。
首先在.xml文件中添加依赖:
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.9</version></dependency>12345复制代码类型:[java]
随后我们要配置application.yml文件,完全版如下:
server: port: 8888spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 datasource: #配置连接池的干系的信息 druid: # 初始连接数量(默认值为0) initial-size: 5 # 最小空闲连接数,纵然连接利用的少了,也还是会保留min-idle个连接 min-idle: 10 # 最大连接数(不能设置太大) max-active: 20 # 获取连接时的最大等待韶光(单位是ms) max-wait: 50000 # 一个连接在池中最小生存的韶光(单位是ms) min-evictable-idle-time-millis: 150000 # 检测须要关闭空闲连接的韶光(单位是ms) time-between-eviction-runs-millis: 50000 # 配置扩展插件:去掉后,监控界面的sql无法统计(stat-监控统计,log4j-日志,wall-防火墙,防止SQL注入) filters: stat,wall,log4j2 # 配置慢sql展示语句,slowSqlMillis对应的是慢查询语句的韶光 connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=10 # 检测连接是否有效,为空时以下三个配置均无效 validation-query: SELECT 1 DROM DUAL # 申请连接时实行validationQuery检测连接是否有效,默认true,开启后会降落性能 test-on-borrow: true # 归还连接时实行validationQuery检测连接是否有效,默认false,开启后会降落性能 test-on-return: true # 申请连接时如果空闲韶光大于timeBetweenEvictionRunsMillis,实行validationQuery检测连接是否有效,默认false,建议开启,不影响性能 test-while-idle: true # 配置登录干系信息 stat-view-servlet: # 是否开启 StatViewServlet enabled: true #配置访问网址 url-pattern: "/druid/" # 访问监控页面 白名单,默认127.0.0.1 allow: 127.0.0.1 # 访问监控页面 黑名单,黑名单不能访问 deny: 192.168.111.112 # 访问监控页面 上岸账号 login-username: JavaFamily # 访问监控页面 上岸密码 login-password: JavaFamily # 是否可以重置数据源 reset-enable: true # 配置监控 web-stat-filter: exclusions: ".js,.gif,.jpg,.bmp,.png,.css,.ico,/druid/" enabled: true url-pattern: "/" family: driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource url: jdbc:mysql://localhost:3306/Family?serverTimezone=GMT%2b8&characterEncoding=utf-8 username: root password: 123456 family2: driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource url: jdbc:mysql://localhost:3306/Family2?serverTimezone=GMT%2b8&characterEncoding=utf-8 username: root password: 12345612345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970复制代码类型:[java]
将以上依赖注入,配置完成后,我们修正一下DataSourceConfig.java中的代码:
@Configurationpublic class DataSourceConfig { // 当一个接口有多个时候实现类的时候,如果Spring只能选一个实现进行依赖注入时,就选这个数据源(默认数据源) @Primary @Bean(name = "familyDataSource") @ConfigurationProperties(prefix = "spring.datasource.family") public DataSource familyDataSource() { return DruidDataSourceBuilder.create().build(); } @Bean(name = "family2DataSource") @ConfigurationProperties(prefix = "spring.datasource.family2") public DataSource family2DataSource() { return DruidDataSourceBuilder.create().build(); } @Bean(name="familyJdbcTemplate") public JdbcTemplate familyJdbcTemplate (@Qualifier("familyDataSource") DataSource datasource) { return new JdbcTemplate(datasource); } @Bean(name="family2JdbcTemplate") public JdbcTemplate family2JdbcTemplate(@Qualifier("family2DataSource") DataSource datasource) { return new JdbcTemplate(datasource); }}1234567891011121314151617181920212223242526272829复制代码类型:[java]
将原来的DataSourceBuilder换成赤色标记部分。
SQL监控准备事情完成后,运行代码,在浏览器输入http://localhost:8888/druid/login.html,跳转到上岸页面,输入用户名:JavaFamily,密码:JavaFamily
完成上岸后选择SQL监控:
由于还没有进行数据库操作,暂时没有监控内容。
我们在postman实行插入操作:
这时我们在回到浏览器查看SQL监控结果:
如果想要查看Durid的数据,那么就须要在controller中添加代码。
@GetMapping("/data")public Object druid(){ return DruidStatManagerFacade.getInstance().getDataSourceStatDataList();}1234复制代码类型:[java]
Durid数据:
我们利用之前讲过的PetsController.java中通过id对宠物进行查询方法,在postman中进行查询操作:
由于id的值不同,会导致查询的sql韶光不一致,我们查询多个不同的id就会创造最慢sql:
l:
「链接」