spring boot 1.5.4 整合 druid(十三)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
22天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
38 0
|
4月前
|
druid Java 数据库连接
SpringBoot原理分析 | Spring Data整合:JDBC、Druid、Mybatis
SpringBoot原理分析 | Spring Data整合:JDBC、Druid、Mybatis
62 0
|
4月前
|
监控 druid Java
Spring Boot 3 集成 Druid 连接池详解
在现代的Java应用中,使用一个高效可靠的数据源是至关重要的。Druid连接池作为一款强大的数据库连接池,提供了丰富的监控和管理功能,成为很多Java项目的首选。本文将详细介绍如何在Spring Boot 3项目中配置数据源,集成Druid连接池,以实现更高效的数据库连接管理。
349 2
Spring Boot 3 集成 Druid 连接池详解
|
6月前
|
druid Java 数据库连接
28SpringBoot整合Druid
28SpringBoot整合Druid
41 0
|
4月前
|
SQL druid Java
springboot +logback+阿里数据源(druid)打印sql日志以及简化日志输出方式
springboot +logback+阿里数据源(druid)打印sql日志以及简化日志输出方式
340 0
|
4月前
|
druid Java 关系型数据库
SpringBoot整合junit、整合Mybatis及使用Druid数据源
SpringBoot整合junit、整合Mybatis及使用Druid数据源
37 0
|
1天前
|
安全 Java 应用服务中间件
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
4 0
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
|
3天前
|
XML Java C++
【Spring系列】Sping VS Sping Boot区别与联系
【4月更文挑战第2天】Spring系列第一课:Spring Boot 能力介绍及简单实践
28 0
【Spring系列】Sping VS Sping Boot区别与联系
|
4月前
|
监控 druid Java
Druid【SpringBoot集成】监控数据库报错 Failed to bind properties under ‘‘ to javax.sql.DataSource 解决(含配置源码)
Druid【SpringBoot集成】监控数据库报错 Failed to bind properties under ‘‘ to javax.sql.DataSource 解决(含配置源码)
226 0
|
2月前
|
XML 监控 druid
【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程
【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程