Springboot Dynamic Datasource
!
警告:这篇文章创作时长大于 730 天,其内容可能已经过时。
Dynamic-Datasource
在pom.xml
中导入依赖
0
1
2
3
|
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
</dependency>
|
在application.yml
中配置动态数据源
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
spring:
datasource:
dynamic:
# 设置默认的数据源或者数据源组,默认值即为main
primary: main
# 严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
strict: false
datasource:
# 默认数据源
main:
url: url
username: username
password: passward
driver-class-name: xxx.Dirver
# 其他数据源
slave_1:
url: url
username: username
password: passward
driver-class-name: xxx.Dirver
|
在Service
方法上使用@DS
注解
0
1
2
3
4
5
6
7
8
9
10
11
12
|
public interface DemoService {
void testDynamicFunc();
}
@Service
public class DemoServiceImpl implements DemoService {
@Override
@DS("main")
@Transactional(rollbackFor = Exception.class, isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRES_NEW)
void testDynamicFunc() {
demoDao.batchInsertOrUpdate(List<Object> record);
}
}
|
PS:在使用@DS
注解时,需要注意以下两点
- 在同一个
Service
类中,使用多个@DS
注解配置不同的数据源,可能会失效,解决办法是不同数据源拆分成不同的Service
类。
- 在同一个事务中,使用多个
@DS
注解配置不同的数据源,可能会失效,解决办法是将事务的传播方式修改为propagation = Propagation.REQUIRES_NEW
相关文章