dynamic-datasource + druid 整合
pom.xml
<!-- 动态数据源 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.2.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
配置文件
spring:
autoconfigure:
#自动化配置 例外处理
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
# dynamic-datasource-spring-boot-starter 动态数据源的配置内容
datasource:
type: com.alibaba.druid.pool.DruidDataSource
dynamic:
primary: master # 设置默认的数据源或者数据源组,默认值即为 master
datasource:
master:
url: jdbc:mysql://localhost:3306/db1?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
username: ***
password: ***
driver-class-name: com.mysql.cj.jdbc.Driver
sub:
url: jdbc:mysql://localhost:3306/db2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true
username: ***
password: ***
driver-class-name: com.mysql.cj.jdbc.Driver
#dynamic - 公共配置
druid:
initialSize: 5
minIdle: 5
maxActive: 30
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
filters: stat,wall,slf4j,config
useGlobalDataSourceStat: true
stat:
log-slow-sql: true
merge-sql: true
slow-sql-millis: 10000
druid:
# 监控页面
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: ***
login-password: ***
如果不配置 自动化配置 例外处理,则需要在启动入口增加注解
@SpringBootApplication(exclude = { DruidDataSourceAutoConfigure.class }),
以避免注入druid数据源
最后在mapper层的方法上加@DS(“数据源名称”),即配置文件代码块中的master或sub,当然也可以在将注解作用在service层和mapper层的类或方法上
**可能出现的错误
没有设置 DataSource.url属性:‘spring.datasource.url’ is not specified and no embedded datasource could be…
Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required
以上两个问题都可以通过上面的配置解决,如果不行,可以尝试向maven仓库中的druid删除,再删除pom文件中的druid,然后执行clear(可省略),最后再在pom中导入druid
**