spring boot 1.5.4 整合 druid(十三)

  1. 云栖社区>
  2. 博客>
  3. 正文

spring boot 1.5.4 整合 druid(十三)

技术小阿哥 2017-11-28 17:09:00 浏览1074
展开阅读全文

1      集成druid连接池

spring boot集成druid项目mybatis-spring-boot源码:

spring-boot相关项目源码,

码云地址:https://git.oschina.net/wyait/springboot1.5.4.git

github地址https://github.com/wyait/spring-boot-1.5.4.git


1.1  druid简介

Druid是阿里巴巴开源的一个项目。,整个项目由数据库连接池、插件框架和SQL解析器组成。该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计SQL信息、SQL性能收集、SQL注入检查、SQL翻译等,程序员可以通过定制来实现自己需要的功能。

Druid是一个JDBC组件,它包括三部分: 

DruidDriver 代理Driver,能够提供基于FilterChain模式的插件体系。 

DruidDataSource 高效可管理的数据库连接池。 

SQLParser 

Druid可以做什么? 

1) 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。 

2) 替换DBCPC3P0Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。 

3) 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiverDruidDataSource都支持PasswordCallback 

4) SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-LoggingLog4jJdkLog,你可以按需要选择相应的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'用于防火墙 ;日志是slf4jlog4j改为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 servletfilter提供监控页面访问;

/**

 *

 * @项目名称:mybatis-spring-boot

 * @类名称:DruidConfiguration

 * @类描述:Druid监控serveletfilter配置

 * @创建人:wyait

 * @创建时间:2017629下午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)    ——输入地址进行测试;

wKiom1nNq2KAAfMuAAFHnh7RmrQ330.png

 

 



本文转自 wyait 51CTO博客,原文链接:http://blog.51cto.com/wyait/1969628,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
技术小阿哥
+ 关注