spring boot 1.5.4 整合 druid(十三)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

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,如需转载请自行联系原作者

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
14天前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
5月前
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
135 0
|
6天前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
24 2
|
4月前
|
XML druid Java
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
45 0
|
3月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
202 6
|
2月前
|
druid Java 数据库连接
SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池,以及实现增删改查功能
SpringBoot项目整合MybatisPlus和Druid数据库连接池,实现基本的增删改查功能。
185 0
|
4月前
|
运维 Java 关系型数据库
Spring运维之boot项目bean属性的绑定读取与校验
Spring运维之boot项目bean属性的绑定读取与校验
49 2
|
4月前
|
存储 运维 Java
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
53 2
|
4月前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
287 1
|
4月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
43 1