SpringBoot整合Druid数据源
Durid:阿里巴巴开源的数据源,是市面上性能最好的数据源,且提供了监控功能,可以实时监控执行的数据库操作
SpringBoot整合Druid数据源步骤:
1、导入依赖
com.alibaba
druid
1.1.21
log4j
log4j
1.2.17
2、在application.yml配置druid数据源和后台监控功能的属性:
spring:
datasource:
username: root
password: 1234
url: jdbc:mysql://localhost:3306/mybatis?serverTimezione=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
#srpingboot默认是不注入这些属性值的,需要自己绑定
#druid数据源专有配置
druid:
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvicableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
#配置监控统计拦截的filters,stat:监控统计、Log4j:日志记录、防火墙wall 防止sql注入
#如果允许时报错java.lang.ClassNotFoundExceptiopn:org.apache.Log4j.Priority
#导入Log4j依赖即可,
filters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
userGlobalDataSourceStat: true
connectionProperties: druid.stat.mergerSql=true;druid.stat.slowSqlMillis=500
3、自定义Druid配置类,使用@Configuration修饰:
@Configuration
public class DruidConfig {
//配置德鲁伊数据源
@ConfigurationProperties(prefix="spring.datasource")
@Bean
public DataSource druidDataSource(){
return new DruidDataSource();
}
//后台监控功能:web.xml ServletRegistrationBean
//因为SpringBoot内置了servlet容器,所有没有web.xml替代方法:ServletRegistrationBean
@Bean
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
//后台需要有人登录,账号、密码配置
HashMap<String, String> initParameters = new HashMap<>();
//增加配置,用户名和密码的参数名loginUsername和loginPassword是固定的
initParameters.put("loginUsername","admin");
initParameters.put("loginPassword","admin");
//允许谁可以访问
initParameters.put("allow","");
//禁止谁能访问
//initParameters.put("ligang","192.168.43.101");
bean.setInitParameters(initParameters);//设置初始化参数
return bean;
}
//filter
@Bean
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean<WebStatFilter> bean = new FilterRegistrationBean<>();
bean.setFilter(new WebStatFilter());
//指定可以过滤哪些请求
HashMap<String, String> initParameters = new HashMap<>();
//这些资源不进行拦截 initParameters.put("exclusions","*.js,*.css,/druid/*,*.img,/,/index.html");
bean.setInitParameters(initParameters);
return bean;
}
}