在使用Druid时候遇到的坑
注释错误
错误示范
//将配置再application.yml文件中的datasource起来并且注入到容器中
@ConfigurationProperty(prefix = "spring.datasource")
@Bean()
public DataSource druidDataSource() {
return new DruidDataSource();
}
正确示范
//将配置再application.yml文件中的datasource起来并且注入到容器中
@ConfigurationProperties(prefix = "spring.datasource")
@Bean()
public DataSource druidDataSource() {
return new DruidDataSource();
}
分析:
注释错了,一个是ConfigurationProperty,另一个是ConfigurationProperties,两者是完全不同的,当时我是靠代码的补全去选择,然后我花了好久的时间才发现这里,我事后去找这个注释竟然找不到了,巨坑!!!
application配置文件的坑
错误示范:
spring:
datasource:
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/spring_boot?serverTimezone=UTC
type: com.alibaba.druid.pool.DruidDataSource
druid:
filters: stat,wall
正确示范
spring:
datasource:
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/spring_boot?serverTimezone=UTC
type: com.alibaba.druid.pool.DruidDataSource
filters: stat,wall
分析:
配置出错,一开始我去查看该版本的源码,发现DataSourceProperties的配置类里面竟然没有filters这个属性,然后我就是用了druid下面的filters,结果显然而知,在druid的后台中,sql这些数据一个都没统计,然后我抱着瞎来的心态把filters直接写在datasource下面竟然成功了,我现在还是不理解为什么明明没有这个属性却能起到作用?巨坑!!!
下面是DataSourceProperties的部分源码,哪里有什么filters???