阿里druid-spring-boot-starter 配置,个人整理以及遇到的问题(防止之后找不到)
简介,什么是Druid
Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和SQL解析器组成。该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计SQL信息、SQL性能收集、SQL注入检查、SQL翻译等,程序员可以通过定制来实现自己需要的功能。
1、Druid官方github地址(这个可以多看看)
https://github.com/alibaba/druid
2、需要导入一些依赖
Druid数据池依赖
<!-- 数据库-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.11</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.11</version>
</dependency>
<!-- 数据库日志实现-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--SpringBoot 的aop 模块-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
3、Druid配置信息
现版本其实有大量的默认值都已经配置好了,可以自己去看看源码
(配置信息多,用yaml)
(对于Druid配置,只需要选用自己需要的就行了,我这里是写的一个总结,后面自己有需要其他还会加)
spring:
#数据库配置项
# JDBC 配置(驱动类自动从url的mysql识别,数据源类型自动识别)(yaml相对来说配置信息更加好观看)
datasource:
druid:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/crm
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 2003
# 连接池配置信息(通常来说,只需要修改initialSize、minIdle、maxActive
# 如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。分库分表较多的数据库,建议配置为false。removeabandoned不建议在生产环境中打开如果用SQL Server,建议追加配置)
# 初始化大小
initial-size: 5
min-idle: 5
max-active: 20
# 配置获取连接等待超时的时间
max-wait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 300000
# 申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性
test-while-idle: true
# 获取连接时执行检测,建议关闭,影响性能
test-on-borrow: false
# 是否开启PSCache,PSCahce对支持游标的数据库性能提示巨大,oracle建议开启,mysql下建议关闭
pool-prepared-statements: false
# 开启poolPreparedStatments后生效
max-pool-prepared-statement-per-connection-size: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,‘wall’用于防火墙·,log4j2:日志
filters: stat,wall,log4j2
# Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
# Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔
aop-patterns: 'com.haoyang.webadmin.*'
# 配置监控属性: 在druid-starter的: com.alibaba.druid.spring.boot.autoconfigure.stat包下进行的逻辑配置
web-stat-filter: # WebStatFilter配置,
enabled: true #默认为false,表示不使用WebStatFilter配置,就是属性名去短线
url-pattern: /* #拦截该项目下的一切请求
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*' #对这些请求放行
session-stat-enable: true
principal-session-name: session_name
principal-cookie-name: cookie_name
# profile-enable:
# session-stat-max-count:
stat-view-servlet: # StatViewServlet配置
enabled: true #默认为false,表示不使用StatViewServlet配置,就是属性名去短线
url-pattern: /druid/* #配置DruidStatViewServlet的访问地址。后台监控页面的访问地址
reset-enable: false #禁用HTML页面上的“重置”功能,会把所有监控的数据全部清空,一般不使用
login-username: admin #监控页面登录的用户名
login-password: 2003 #监控页面登录的密码
# StatViewSerlvet展示出来的监控信息比较敏感,是系统运行的内部情况,如果你需要做访问控制,可以配置allow和deny这两个参数
# deny优先于allow,如果在deny列表中,就算在allow列表中,也会被拒绝。如果allow没有配置或者为空,则允许所有访问
# 配置的格式
# <IP>
# 或者<IP>/<SUB_NET_MASK_size>其中128.242.127.1/24
# 24表示,前面24位是子网掩码,比对的时候,前面24位相同就匹配,不支持IPV6。
allow: 127.0.0.1,192.168.2.111 #IP白名单(没有配置或者为空,则允许所有访问)。允许谁访问druid后台,默认允许全部用户访问。
deny: #IP黑名单 (存在共同时,deny优先于allow)。不允许谁访问druid后台
filter:
stat:
enabled: true # 开启DruidDataSource状态监控
db-type: mysql # 数据库的类型
log-slow-sql: true # 开启慢SQL记录功能
slow-sql-millis: 2000 # 默认3000毫秒,这里超过2s,就是慢,记录到日志
wall:
enabled: true
config:
drop-table-allow: false
4、问题
以前学习并没有仔细观看,现在回来看一遍发现了一些问题(后续继续添加,目前学的不深)
1、配置问题
一开始把所有的数据库连接池配置信息全部写进spring.datasource.druid下,这样子
spring:
datasource:
druid:
filters: stat,wall,log4j2
# 初始化大小
initial-szie: 5
min-idle: 5
max-active: 20
然后写了一个测试类
测试类
@SpringBootTest
class ApplicationTests {
@Autowired
DataSource dataSource;
@Test
void contextLoads() throws SQLException {
System.out.println(dataSource.getClass());
//获得连接
Connection connection = dataSource.getConnection();
System.out.println(connection);
DruidDataSource druidDataSource = (DruidDataSource) dataSource;
System.out.println(druidDataSource.getMaxActive());
System.out.println(druidDataSource.getInitialSize());
System.out.println(druidDataSource.getMinIdle());
//关闭连接
connection.close();
}
}
然后经过了一些列断点,源码查看之后,发现spring.datasource.druid配置并没有生效,发现是支持监控配置,但连接池配置并没有写进去
这里看了一下官方的SpringBoot配置示例:
https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
最后发现我自己写了一个自定义注入类,然后注入的并不是spring.datasource.druid下的,而是spring.datasource下的,所以会报错,如果并没有写这个类也没事,SpringBoot会自动注入
/**
* 将自定义的Druid数据源添加到容器中,不再让Spring Boot 自动创建
* 这样做的目的是: 绑定全局配置文件中的druid 数据源属性注入到 com.alibaba.druid.pool.DruidDataSource
* 从而让它们生效
*
* @ConfigurationProperties(prefix = "spring.datasource"):
* 作用就是将 全局配置文件中前缀为Spring.dataSource的属性值注入到com.alibaba.druid.pool.DruidDataSource的同名参数中
*/
@Configuration
public class DruidConfig {
/**
* 将所有前缀为spring.datasource下的配置项都加载DataSource中
*/
//@ConfigurationProperties("spring.datasource"),这样注入,无法将druid配置文件下的连接池配置自动注入,所以我加一个.druid,这样就是将spring.datasource.druid的属性值注入到com.alibaba.druid.pool.DruidDataSource的同名参数中,而不是spring.datasource
@ConfigurationProperties("spring.datasource.druid")
@Bean
public DataSource druidDataSource() {
return new DruidDataSource();
}
阿里druid-spring-boot-starter 配置,个人整理以及遇到的问题(防止之后找不到)的更多相关文章
- Druid Spring Boot Starter 从配置到简单运行 -解决zone不匹配 -解决dataSource加载失败
Druid Spring Boot Starter 中文 | English Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Druid数据库连接池 ...
- Sping Boot入门到实战之实战篇(一):实现自定义Spring Boot Starter——阿里云消息队列服务Starter
在 Sping Boot入门到实战之入门篇(四):Spring Boot自动化配置 这篇中,我们知道Spring Boot自动化配置的实现,主要由如下几部分完成: @EnableAutoConfigu ...
- 自定义的Spring Boot starter如何设置自动配置注解
本文首发于个人网站: 在Spring Boot实战之定制自己的starter一文最后提到,触发Spring Boot的配置过程有两种方法: spring.factories:由Spring Boot触 ...
- Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 图 2 第二章目录结构图 第 2 章 Spr ...
- Spring Boot 属性配置&自定义属性配置
在使用spring boot过程中,可以发现项目中只需要极少的配置就能完成相应的功能,这归功于spring boot中的模块化配置,在pom.xml中依赖的每个Starter都有默认配置,而这些默认配 ...
- Spring Boot自定义配置实现IDE自动提示
一.背景 官方提供的spring boot starter的配置项,我们用IDE配置的时候一般都有自动提示的,如下图所示 而我们自己自定义的配置却没有,对开发非常不友好容易打错配置,那这个是怎样实现的 ...
- Spring Boot属性配置&自定义属性配置
一.修改默认配置 例1.spring boot 开发web应用的时候,默认tomcat的启动端口为8080,如果需要修改默认的端口,则需要在application.properties 添加以下记录: ...
- 一个简单易上手的短信服务Spring Boot Starter
前言 短信服务在用户注册.登录.找回密码等相关操作中,可以让用户使用更加便捷,越来越多的公司都采用短信验证的方式让用户进行操作,从而提高用户的实用性. Spring Boot Starter 由于 S ...
- 最详细的自定义Spring Boot Starter开发教程
1. 前言 随着Spring的日渐臃肿,为了简化配置.开箱即用.快速集成,Spring Boot 横空出世. 目前已经成为 Java 目前最火热的框架了.平常我们用Spring Boot开发web应用 ...
- spring boot 环境配置(profile)切换
Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...
随机推荐
- JS:比较运算符
比较运算符有如下: 1.== 等于: 值相等 var a = "0"; var b = 1; var c = 0; console.log(a==0); //true consol ...
- 强化学习-linux安装gym、atari和box2d环境
安装gym和atari环境 pip3 install gym pip3 install gym[atari] pip3 install gym[accept-rom-license] 安装box2d环 ...
- Vue回炉重造之图片加载性能优化
前言 图片加载优化对于一个网站性能好坏起着至关重要的作用.所以我们使用Vue来操作一波.备注 以下的优化一.优化二栏目都是我自己封装在Vue的工具函数里,所以请认真看完,要不然直接复制的话,容易出错的 ...
- jenkins+k8s部署
1. jenkins配置部署,从git或者svn等拉取代码,编制打包,在博客的jenkins那块有具体的讲解 2. 将打好的包war/java包拷贝到k8s-Master,或者在jenkins上也行, ...
- CODING DevOps 助力中化信息打造新一代研效平台,驱动“线上中化”新未来
中化信息技术有限公司,简称"中化信息",是世界 500 强企业中国中化控股有限责任公司(简称"中国中化")的全资直属公司,依托于中国中化的信息化建设实践,建立起 ...
- Qt数据可视化(散点图、折线图、柱状图、盒须图、饼状图、雷达图)开发实例
目录 散点图 折线图 柱状图 水平柱状图 水平堆叠图 水平百分比柱状图 盒须图 饼状图 雷达图 Qt散点图.折线图.柱状图.盒须图.饼状图.雷达图开发实例. 在开发过程中我们会使用多各种各样的图 ...
- 018(Phone List)(字典树)
题目:http://ybt.ssoier.cn:8088/problem_show.php?pid=1471 题目思路: 这不就是一个超级明显的字典树嘛 字典树,又称单词查找树,Trie树,是一种树形 ...
- Grammarly for Chrome-语法、用词自动检查
从语法和拼写到风格和语气,Grammarly帮助你消除写作错误,找到完美的词语来表达自己.当你在Gmail.Twitter.LinkedIn和几乎任何你发现自己在写作的地方写作时,你都会从Gramma ...
- Cisco Packet Tracer Student(思科网络模拟器)模拟搭建VLAN网络
一.VLAN简介 VLAN指在同一个物理网段内,通过逻辑手段,将其划分出多个虚拟的局域网,每个虚拟局域网都具备和真实局域网一样的功能.VLAN不受物理位置限制,可以灵活划分,同一个VLAN内的主机之间 ...
- Solution -「CF1373G」Pawns
小清新线段树题(( 每个位置的边只能向靠右的三个方向走,最后要走到一条基准线上.即对于一个点 \((x, y)\),它最后应该落在 \((k, y + |k - x|)\). 士兵可以一个一个进行移动 ...