原文地址:
https://blog.csdn.net/u012557538/article/details/79218808
1.application.properties配置文件
spring.datasource.type =
com.alibaba.druid.pool.DruidDataSource
#----DS1----
spring.datasource.p
rimary.url
=
jdbc:sqlserver://127.0.0.1:1433;databasename=test1
spring.datasource.primary.username=
sa
spring.datasource.primary.password=
123456
#----DS2---
spring.datasource.se
condary.url
=
jdbc:sqlserver://127.0.0.1:1433;databasename=test2
spring.datasource.secondary.username=
sa
spring.datasource.secondary.password=
123456
spring.datasource.t
hird.url
=
jdbc:sqlserver://127.0.0.1:1433;databasename=test3
spring.datasource.third.username=
sa
spring.datasource.third.password=
123456
#---------------------------------------------------------------------------------------
spring.datasource.primary.driver-class-name=
com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.secondary.driver-class-name=
com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.t
hird.driver-class-name
=
com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.druid.initial-size =
5
spring.datasource.druid.max-active =
20
spring.datasource.druid.min-idle =
5
spring.datasource.druid.max-wait=
30000
以上为最基本配置。
注:druid如果不配置Filter,默认是开启的,譬如web-stat-filter、
stat-view-servlet等,可以通过配置属性覆盖默认配置,例如:
# WebStatFilter monitor
spring.datasource.druid.web-stat-filter.enabled=
true
spring.datasource.druid.web-stat-filter.url-pattern=
\*
spring.datasource.druid.web-stat-filter.exclusions=
*.
js
,*.
gif
,*.
jpg
,*.
png
,*.
css
,*.
ico
,/
druid
/*
spring.datasource.druid.web-stat-filter.session-stat-enable=
false
spring.datasource.druid.web-stat-filter.session-stat-max-count=
1000
#\u76D1\u63A7\u5355\u4E2Aurl\u8C03\u7528\u7684sql\u5217\u8868
spring.datasource.druid.web-stat-filter.profile-enable=
true
# StatViewServlet ,it configs who can visit
spring.datasource.druid.stat-view-servlet.enabled=
true
spring.datasource.druid.stat-view-servlet.url-pattern=
/
druid
/*
spring.datasource.druid.stat-view-servlet.reset-enable=
true
spring.datasource.druid.stat-view-servlet.login-username=
admin
spring.datasource.druid.stat-view-servlet.login-password=
admin123
spring.datasource.druid.stat-view-servlet.allow=
127.0.0.1
如果设置了
StatViewServlet,即配置了监控池认证,要进监控池需要输入
http://127.0.0.1:8083/druid/login.html,如果没配置,直接输入http://127.0.0.1:8083/druid/即可
接下来是正式的数据源配置:
-
package
cn.do1shoje.config;
-
-
import
javax.sql.DataSource;
-
-
import
org.springframework.beans.factory.annotation.Qualifier;
-
import
org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
-
import
org.springframework.boot.context.properties.ConfigurationProperties;
-
import
org.springframework.context.annotation.Bean;
-
import
org.springframework.context.annotation.Configuration;
-
import
org.springframework.context.annotation.Primary;
-
import
org.springframework.jdbc.core.JdbcTemplate;
-
-
import
com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
-
-
-
-
-
-
@Configuration
-
public
class
DSConfig {
-
@Bean
(name =
"primaryDataSource"
)
-
@Qualifier
(
"primaryDataSource"
)
-
@ConfigurationProperties
(prefix =
"spring.datasource.primary"
)
-
public
DataSource primaryDataSource(){
-
-
return
DruidDataSourceBuilder.create().build();
-
}
-
-
@Bean
(name =
"secondaryDataSource"
)
-
@Qualifier
(
"secondaryDataSource"
)
-
@Primary
-
@ConfigurationProperties
(prefix =
"spring.datasource.secondary"
)
-
-
public
DataSource secondaryDataSource(){
-
-
return
DruidDataSourceBuilder.create().build();
-
}
-
@Bean
(name =
"thirdDataSource"
)
-
@Qualifier
(
"thirdDataSource"
)
-
@ConfigurationProperties
(prefix =
"spring.datasource.third"
)
-
public
DataSource thirdDataSource(){
-
-
return
DruidDataSourceBuilder.create().build();
-
}
-
-
@Bean
(name =
"primaryJdbcTemplate"
)
-
public
JdbcTemplate primaryJdbcTemplate(
@Qualifier
(
"primaryDataSource"
)DataSource dataSource){
-
return
new
JdbcTemplate(dataSource);
-
}
-
-
@Bean
(name =
"secondaryJdbcTemplate"
)
-
public
JdbcTemplate secondaryJdbcTemplate(
@Qualifier
(
"secondaryDataSource"
)DataSource dataSource){
-
return
new
JdbcTemplate(dataSource);
-
}
-
@Bean
(name =
"thirdJdbcTemplate"
)
-
public
JdbcTemplate thirdJdbcTemplate(
@Qualifier
(
"thirdDataSource"
)DataSource dataSource){
-
return
new
JdbcTemplate(dataSource);
-
}
-
}
这里我使用时遇到一个问题,就是构建DataSource时,一直用的JDBC的DataSourceBuilder在构建数据源,然后发觉怎么查看日志都发现Druid没有生效,一开始我是没有发觉的,因为用
DBC的DataSourceBuilder在构建数据源,程序是正常的,调用数据库也是正常的,只是druid未生效而已,直到
我查看druid的监控池后,才发现这个druid未生效,为什么呢?因为druid监控池中的几个指标全是空的,连数据源那个指标都是空的,当即判断,druid未生效。改用DruidDataSourceBuilder构建数据源即解决springboot整合多数据源和Druid的问题。
数据源配置完了,则是使用问题。
[java]
view plain
-
@RestController
-
@RequestMapping
(
"/api/v1"
)
-
public
class
InfoController {
-
private
Logger log = LoggerFactory.getLogger(InfoController.
class
);
-
private
static
final
String DEFAULT_PAGE_START =
"0"
;
-
private
static
final
String DEFAULT_PAGE_SIZE =
"10"
;
-
@Autowired
-
@Qualifier
(
"primaryJdbcTemplate"
)
-
private
JdbcTemplate jt;
-
@Autowired
-
@Qualifier
(
"secondaryJdbcTemplate"
)
-
private
JdbcTemplate jt2;}
在需要使用的地方直接注入,即可。
1、先在pom.xml中引入
Druid
DataSource
相关的jar,引入的是1.1.17版本
备注:引用了oracle的jar。引入mybatis的jar是因为和
druid
有依赖关系,也可以结合mybatis使用。
<?xml version="1.0" encoding="UTF-8...
Druid
是Java语言中最好的数据库连接池。
Druid
能够提供强大的监控和扩展功能。
Druid
DataSource
支持的数据库:
理论上说,支持所有有jdbc驱动的数据库。最近发现
Druid
在
springboot
框架下有更加好用的
Druid
Spring
Boot
Starter,可以省去原本写
Druid
的一些
配置
文件或者@Configuration来
配置
,直接将
配置
写在applicat...
有时候为了减少数据库的压力,就要实现数据库的读写分离,这种情况往往是读多写少的情况,例如电商平台。既然数据库读写分离了,那么代码层也就需要读写不同的数据库了。实现方法应该有不少,我知道有插件实现,判断写请求还是读请求来请求不同的数据库,还有代码实现,不同的SQL访问不同的数据源,也就是接下来要说的
多数据源
。
一、基础介绍
代码层
多数据源
的实现方法也有很多,例如不同的包拥有不同的数据源、...
SpringBoot
+JPA+
Druid
多数据源
配置
完全版+有坑提示简介多数据
配置
需要注意的点(坑)体会参考
在下是刚毕业的小萌新,现在在一家股票资讯公司做Java开发,手头上的项目(crud项目)本来是只连Mysql,现新增了功能需要连Postgre,于是哼哧哼哧开始了JPA的
多数据源
配置
。经历一番轰轰烈烈的搜索,找了好几个
多数据源
的
配置
教程,就开始了我的模仿表演。没想到一步一个坑,经过几...
SpringBoot
2.0.5 + jpa +
druid
多数据源
数据库密码加密
文章目录
SpringBoot
2.0.5 + jpa +
druid
多数据源
数据库密码加密一、
druid
多数据源
1. pom.xml2.
配置
文件 application.properties3.
Druid
DefaultPropertiesConfig 用于接收通用的
druid
配置
4.设置
DataSource
5.数据源设置7.需要注意的坑二.数据库密码加密1. 使用
druid
密码加密2.使用Jasypt 加密参考文章
在使用
springboot
开发业务应用程序的过程中,使用
多数据源
的场景很常见。目前,业界常用的
spring
boot
整合
多数据源
的方案主要有两个,一个是Mapper分包方式,另一个是AOP切片方式。针对这种
多数据源
使用场景的痛点,MyBatis-plus团队开源了一个更为方便的解决方案(https://mp.baomidou.com/guide/dynamic-
datasource
.html),但是对于整合
druid
数据库连接池,却没有给出具体的使用示例。本篇文章就是使用
springboot
整合mybati
配置
多数据源
意思就是在一个项目中使用多个数据库,在项目使用中可以不用手动切换数据库来实现不同数据库的数据获取和更新。
源码地址:https://github.com/hanguilin/
boot
-security
项目环境:
SpringBoot
2.1.9、
Spring
Data Jpa
项目文件夹:
二、
配置
application.properties
spring
.
datasource
.
primary
.driver-class-name 数据库驱动包
spring
....
spring
.
datasource
.
druid
.stat-view-servlet.allow=
3、碰到sql监控中没有数据
spring
.
datasource
.
druid
.filters
前一篇文章我们熟悉了HikariCP连接池,也了解到它的性能很高,今天我们讲一下另一款比较受欢迎的连接池:
Druid
,这是阿里开源的一款数据库连接池,它官网上声称:为监控而生!他可以实现页面监控,看到SQL的执行次数、时间和慢SQL信息,也可以对数据库密码信息进行加密,也可以对监控结果进行日志的记录,以及可以实现对敏感操作实现开关,杜绝SQL注入,下面我们详细讲一下它如何与
Spring
集成
,并且顺便了解一下它的监控的
配置
。
文章要点:
Spring
集成
Druid
监控Filters
配置
(
spring
.
datasource
.
druid
.filter.config.enabled=false
spring
.
datasource
.
druid
.web-stat-filter.enabled=false
spring
.
datasource
.
druid
.stat-view-servlet.enabled=false
配置
value默认是true 手动设置后,重启项目即可关闭暴露在公网的
druid
#
druid
监控关闭
spring
.
datasource
.
druid
.filter.config.enabled=false
spring
.
datasource
.
druid
.web-stat-filter.enabled=false
spring
.datas...