SpringBoot默认使用Hikari数据源,如果要切换成Druid数据源,需要首先在pom文件中引入Druid依赖,然后在application配置文件中配置type即可
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>
spring:
datasource:
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_test
type: com.alibaba.druid.pool.DruidDataSource
Druid还拥有许多自己的配置,以下配置不是SpringBoot的默认配置,所以不会生效,要想生效,还需自己写一个Druid的配置类
##以下参数均为Druid专属参数,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
#以下是配置Druid监控的信息
#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入,如果没有stat,则没办法在Druid的页面看到监控信息
filters: stat, wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
/**
* 有了这个类之后,Druid的配置参数就会生效,触类旁通其他数据源也是这么做的
*/
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDataSource(){
return new DruidDataSource();
}
}
想要查看Druid监控,还需要在Druid配置类中将一个Servlet注册成一个bean
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDataSource(){
return new DruidDataSource();
}
//将Servlet注册成一个bean,有了这个方法就可以使用 localhost://端口/druid 登陆
@Bean
public ServletRegistrationBean druidServletRegistrationBean(){
ServletRegistrationBean<Servlet> servletRegistrationBean = new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*");
Map<String,String> initParams = new HashMap<>();
initParams.put("loginUsername","admin");
initParams.put("loginPassword","123456");
//配置后台允许谁可以访问
//initParams.put("allow", "localhost"):表示只有本机可以访问
//initParams.put("allow", ""):为空或者为null时,表示允许所有访问
initParams.put("allow","");
servletRegistrationBean.setInitParameters(initParams);
return servletRegistrationBean;
}
//配置 Druid 监控 之 web 监控的 filter
//WebStatFilter:用于配置Web和Druid数据源之间的管理关联监控统计
@Bean
public FilterRegistrationBean webStatFilter() {
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
//exclusions:设置哪些请求进行过滤排除掉,从而不进行统计
Map<String, String> initParams = new HashMap<>();
initParams.put("exclusions", "*.js,*.css,/druid/*");
bean.setInitParameters(initParams);
//"/*" 表示过滤所有请求
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
有了以上bean,就可以使用 localhost://端口/druid 登陆监控了
更多详细配置及内容见Druid官方github Druid中文常见问题