整合Druid数据源
Druid是阿里巴巴开源平台上一个数据库连接池实现,结合了C3P0,DBCP,PROXOOL等DB池的优点,同时也加入了日志监控。
pom依赖
代码语言:javascript复制 <dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
yml数据源配置
代码语言:javascript复制spring:
datasource:
username: root
password: root1
url: jdbc:mysql://127.0.0.1:3306/cardata?serverTime=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
#指定数据源类型
type: com.alibaba.druid.pool.DruidDataSource
# 下面为Druid连接池的专有的一些设置,应用到上面所有数据源中,
# 初始化大小,最小,最大
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
maxPoolPreparedStatementPerConnectionSize: 20
#配置监控统计拦截的filters,stat:监控统计,log4j日志记录(**pom需导入log4j依赖**),wall:防御sql注入
filters: stat,wall,log4j
useGlobalDataSourceStat: true
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
DruidConfig 对应Bean.xml
代码语言:javascript复制在这里插入代
@Configuration
public class DruidConfig {
// 将yml和当前配置文件进行绑定
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDataSource() {
return new DruidDataSource();
}
// 后台监控: 相当于配置web.xml
// 因为springboot内置了servlet容器,所以没有web.xml,替代方法ServletRegistrationBean
@Bean
public ServletRegistrationBean StatViewServlet() {
// /druid/* 配置访问druid路径
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
// 配置后台账号密码
Map<String, String> initParameters = new HashMap<>();
// 增加配置, 登录账号 固定key
initParameters.put("loginUsername", "admin");
initParameters.put("loginPassword", "123456");
// 允许谁可以访问
initParameters.put("allow", "");
// 设置初始化参数
bean.setInitParameters(initParameters);
return bean;
}
@Bean
public FilterRegistrationBean webStarFilter() {
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;
}
}
本文纯属个人笔记,欢迎大家学习交流