上一篇:spring boot 1.5.4 整合 mybatis(十二)
1 集成druid连接池
spring boot集成druid项目mybatis-spring-boot源码地址:
https://git.oschina.net/wyait/springboot1.5.4.git
1.1 druid简介
Druid是阿里巴巴开源的一个项目。,整个项目由数据库连接池、插件框架和SQL解析器组成。该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计SQL信息、SQL性能收集、SQL注入检查、SQL翻译等,程序员可以通过定制来实现自己需要的功能。
Druid是一个JDBC组件,它包括三部分:
DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。
DruidDataSource 高效可管理的数据库连接池。
SQLParser
Druid可以做什么?
1) 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。
2) 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。
3) 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
4) SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter-Chain机制,很方便编写JDBC层的扩展插件。
相关Druid博文链接:http://www.iteye.com/magazines/90
1.2 集成Druid
整体步骤:
(1) —— Druid简单介绍,具体看官网;http://druid.io/
(2) ——在pom.xml配置druid依赖包;
<dependency>
<!--druid连接池 -->
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.25</version>
</dependency>
(3) —— 配置application.properties加入数据库源类型等参数;
# mysql
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 使用druid连接池 需要注意的是:spring.datasource.type旧的spring boot版本是不能识别的。
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# mybatis
mybatis.type-aliases-package=com.wyait.boot.pojo
mybatis.mapper-locations=classpath:mapper/*.xml
mapper.mappers=com.wyait.boot.dao
mapper.not-empty=false
mapper.identity=MYSQL
# pagehelper
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
# druid
#下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
# 配置获取连接等待超时的时间
spring.datasource.maxWait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.minEvictableIdleTimeMillis=300000
# Oracle请使用select 1 fromdual
spring.datasource.validationQuery=SELECT‘x‘
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
# 打开PSCache,并且指定每个连接上PSCache的大小
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,‘wall‘用于防火墙 ;日志是slf4j,log4j改为slf4j
spring.datasource.filters=stat,wall,log4j
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合并多个DruidDataSource的监控数据
#spring.datasource.useGlobalDataSourceStat=true
(4) ——编写druid servlet和filter提供监控页面访问;
/**
*
* @项目名称:mybatis-spring-boot
* @类名称:DruidConfiguration
* @类描述:Druid监控servelet和filter配置
* @创建人:wyait
* @创建时间:2017年6月29日下午3:04:15
* @version:
*/
@Configuration
public class DruidConfiguration{
@Bean
publicServletRegistrationBean druidServlet() {
ServletRegistrationBeanservletRegistrationBean = new ServletRegistrationBean();
servletRegistrationBean.setServlet(newStatViewServlet());
servletRegistrationBean.addUrlMappings("/druid/*");
Map<String,String> initParameters = new HashMap<String, String>();
initParameters.put("loginUsername","admin");// 用户名
initParameters.put("loginPassword","admin");// 密码
initParameters.put("resetEnable","false");// 禁用HTML页面上的“Reset All”功能
initParameters.put("allow",""); // IP白名单 (没有配置或者为空,则允许所有访问)
//initParameters.put("deny", "192.168.20.38");// IP黑名单
//(存在共同时,deny优先于allow)
servletRegistrationBean.setInitParameters(initParameters);
returnservletRegistrationBean;
}
@Bean
publicFilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBeanfilterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(newWebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");
//@WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")//
//忽略资源
filterRegistrationBean.addInitParameter("exclusions",
"*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*");
returnfilterRegistrationBean;
}
}
(5) ——输入地址进行测试;
spring boot系列文章:
spring boot 1.5.4 集成devTools(五)
spring boot 1.5.4 集成JdbcTemplate(六)
spring boot 1.5.4 集成spring-Data-JPA(七)
spring boot 1.5.4 定时任务和异步调用(十)
spring boot 1.5.4 整合log4j2(十一)
spring boot 1.5.4 整合 mybatis(十二)
spring boot 1.5.4 整合 druid(十三)