1. 场景描述
在springboot开发中,可能遇见操作多个数据库的情形。一种解决方案就是:配置动态数据源,利用AOP,注解实现数据源的自由切换
比如类似使用
@TargetDataSource(DataSourceEnum.MASTER)
public List<SysUserDto> getSysUserInfo() {
return master.selectAll();
}
@TargetDataSource(DataSourceEnum.SLAVE)
public List<CompanyDto> getCompanyInfo() {
return slave.selectAll();
}
利用注解@TargetDataSource,在调用不同mapper的selectAll方法时,一个使用主数据源,一个使用从属数据源分别进行查找
2. 项目依赖
<properties>
<java.version>8</java.version>
<mybatis.version>2.2.0</mybatis.version>
<mysql.version>8.0.25</mysql.version>
<sqlserver.version>9.4.0.jre8</sqlserver.version>
<druid.version>1.2.6</druid.version>
<guava.version>30.1.1-jre</guava.version>
<aop.version>2.5.8</aop.version>
<apache-commons.version>3.12.0</apache-commons.version>
</properties>
3. 场景实现
- 配置数据源
public class DruidDataSourceConfig