启用@DS实现数据源切换
POM内添加核心jar包
1 2 3 4 5 |
< dependency > < groupId >com.baomidou</ groupId > < artifactId >dynamic-datasource-spring-boot-starter</ artifactId > < version >3.0.0</ version > </ dependency > |
yml配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
spring: datasource: #配置hikari连接池 hikari: minimum-idle: 4 maximum-pool-size: 16 connection-timeout: 10000 idle-timeout: 30000 connection-init-sql: set names utf8mb4 #动态数据源配置 dynamic: #主数据源,默认启用 primary: business datasource: #数据源1 business: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/db_business?useUnicode=true&characterEncoding=utf-8 username: **** password: **** #数据源2 user: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/db_user?useUnicode=true&characterEncoding=utf-8 username: **** password: **** #数据源3 order: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/db_order?useUnicode=true&characterEncoding=utf-8 username: **** password: **** |
[核心]-使用@DS注解
使用@DS注解的核心是什么呢?
1.注解添加在dao.mapper上无效
2.注解添加到interface Service类上无效
3.注解添加到interface Service方法上无效
那么,此注解应该如何使用呢?
添加@DS注解到实现类或者实现类的方法上才可以
当注解添加到类上,意味着此类里的方法都使用此数据源;
当注解添加到方法上时,意味着此方法上使用的数据源优先级高于其他一切配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
@Service @DS ( "slave" ) public class UserServiceImpl implements UserService {
@Autowired private JdbcTemplate jdbcTemplate;
public List<Map<String, Object>> selectAll() { return jdbcTemplate.queryForList( "select * from user" ); } @Override @DS ( "slave_1" ) public List<Map<String, Object>> selectByCondition() { return jdbcTemplate.queryForList( "select * from user where age >10" ); } |
最后
好了,就说这么多了,数据源切换的方式、策略有多种,比如按包区分不同数据源的方式、手动配置的数据源的方式,以及@DS注解的方式,该方式的最大特点,相对比较灵活,配置简洁易懂,后期维护及迭代比较乐观。
到此这篇关于springboot集成@DS注解实现数据源切换的方法示例的文章就介绍到这了,更多相关springboot @DS注解数据源切换内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
原文链接:https://blog.csdn.net/weixin_43975867/article/details/117250634
查看更多关于springboot集成@DS注解实现数据源切换的方法示例的详细内容...