因为我们使用SpringBoot的时候默认的数据源是hikari数据源,但是可能在将来的工作里面并不是每个公司用的都是hikari数据源,假如说公司用的是Druid数据源,我们得手动更改数据源,具体步骤如下:
第一步:导入对应jar包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.24</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
第二步:在配置文件修改默认数据源,此处用的是yml格式的配置文件
spring:
datasource:
url: jdbc:mysql://localhost:3306/xxx?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&useSSL=false
username:
password:
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource #修改默认hikari配置源
#SpringBoot默认是不注入这些的,需要自己绑定
#druid数据源专有配置
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
#如果允许报错,java.lang.ClassNotFoundException: org.apache.Log4j.Properity
#则导入log4j 依赖就行
filters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionoProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
注:
至此整合Druid的数据源操作就已经修改成功了,但是Druid相比于hikari功能更加强大,Druid有属于自己的监控功能,然而传统的监控功能得在web.xml通过配置servlet来实现,但SpringBoot生成的项目由于简化了大量的配置操作,已经没有web.xml文件生成,那么我们怎么配置实现监控功能呢?其实很简单,我们只需要自定义一个配置文件,实现ServletRegistrationBean接口即可,相当于自定义了一个servlet代码如下:
@Configuration
public class DruidConfig {
//绑定yml文件,注入yml里面datasource的属性值,并且注入到spring容器
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDataSource(){
return new DruidDataSource();
}
//后台监控页面,这里的写法是写死的,相当于web.xml,因为springboot内置了servlet容器,所以没有web.xml,因此替代方法为实现ServletRegistrationBean
@Bean
public ServletRegistrationBean a(){
ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
//后台需要有人登陆,账号密码配置
Map<String, String> initParameters = new HashMap<>();
//增加配置
initParameters.put("loginUsername","admin");//登陆的key是固定的loginUsername
initParameters.put("loginPassword","123456");//登陆的key是固定的loginPassword
//允许谁可以访问
initParameters.put("allow","");//value为空则所有人都可以访问
//不允许谁访问
//initParameters.put("kuangshen","192.168.11.123");
//设置初始化参数
bean.setInitParameters(initParameters);
return bean;
}
//filter
@Bean
public FilterRegistrationBean b(){
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
//过滤那些请求?
Map<String, String> initParameters = new HashMap<>();
//这些东西不进行统计
initParameters.put("exclusions","*,js,*.css,/druid/*");
bean.setInitParameters(initParameters);
return bean;
}
}
配置完成后,我们启动项目,在网页输入http://localhost:8080/druid/,即可跳转到Druid监控功能的页面
用户名密码为loginUsername,loginPassword对应的value值,我们登录进取就可以查看相应的功能啦!