- 引入pom依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>${version}</version>
</dependency>
- 配置多数据源
spring:
datasource:
dynamic:
primary: master #设置默认的数据源或者数据源组,默认值即为master
strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.
datasource:
master:
url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
slave_1:
url: jdbc:mysql://xx.xx.xx.xx:3307/dynamic
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
slave_2:
url: ENC(xxxxx) # 内置加密,使用请查看详细文档
username: ENC(xxxxx)
password: ENC(xxxxx)
driver-class-name: com.mysql.jdbc.Driver
schema: db/schema.sql # 配置则生效,自动初始化表结构
data: db/data.sql # 配置则生效,自动初始化数据
continue-on-error: true # 默认true,初始化失败是否继续
separator: ";" # sql默认分号分隔符
详见官方网站:
https://mp.baomidou.com/guide/dynamic-datasource.html#%E6%96%87%E6%A1%A3-documentation
3.敲重点,一定要在启动类上将dataSourceAutoConfiguration排除,否则会报错
@springBootApplication(exclude={DataSourceAutoConfiguration.class})
如何实现多数据源数据库密码加密
1.使用jasypt实现,引用pom
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
2.配置文件
jasypt:
encryptor:
password: abc #加密盐值
algorithm:PBEWithMD5AndDES #加密算法设置
iv-generator-classname: org.jasypt.iv.NoIvGenerator
注:3.0之后一定要加加密算法设置,否则可能会出现密码无法解析的情况
cmd加密命令
默认加密方式PBEWithMD5AndDES , 可以更改为PBEWithMD5AndTripleDES
加密命令:
java -cp 自己jar包的地址 org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=“自己需要加密的字符串” password=“自己加密时的盐” algorithm=“自己的加密方式”
解密命令:
java -cp 自己jar包的地址 org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input=“自己需要解密的字符串” password=“自己加密时的盐” algorithm=“自己的加密方式”