MybatisPlus 多数据源切换@DS注解失效问题解决

 更新时间:2025年12月14日 08:38:24   作者:DavidSoCool  
在业务开发中使用到了多数据源,遇到了@DS注解失效问题,有两个场景使用到同一个@DS的查询方法,下面就来介绍一下该问题的解决,感兴趣的可以了解一下

在业务开发中使用到了多数据源,遇到了@DS注解失效问题,有两个场景使用到同一个@DS的查询方法,一个正常,另一个失效。

伪代码如下:

@Service
public class UserService {
 
    @Autowired
    private OtherService other;
 
	// 正常
    public void writeAndRead() {
        other.query();
    }
	
	// 失效
    @Transactional
    public void writeAndRead() {
        other.query();
        userMapper.insert(...);
    }
 
}
 
 
@DS("slave")
@Service
public class OtherService {
 
    public void query() {
        mapper.selectList(...); 
    }
}

场景一和二正常都打印了@DS中的key

后续排查发现是失效场景中使用了事务注解 @Transactional,事务注解会绑定数据源,导致@DS失效,后续解决方案是在使用@DS切换数据源的类方法上加入一下代码:

@DS("slave")
@Service
public class OtherService {
 
    // 非事务性地执行
    @Transactional(propagation = Propagation.NOT_SUPPORTED)
    public void query() {
        mapper.selectList(...); 
    }
}

到此这篇关于MybatisPlus 多数据源切换@DS注解失效问题解决的文章就介绍到这了,更多相关MybatisPlus @DS注解失效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java 求解二维数组列最小值

    java 求解二维数组列最小值

    这篇文章主要介绍了java 求解二维数组列最小值的相关资料,需要的朋友可以参考下
    2017-05-05
  • MyBatisPlus实现自动填充字段的实践

    MyBatisPlus实现自动填充字段的实践

    MyBatis-Plus自动填充功能可以在插入或更新数据时自动填充字段,如创建时间和更新时间,本文就来详细的介绍一下,具有一定的参考价值,感兴趣的可以了解一下
    2024-10-10
  • Java注解的简单入门小案例

    Java注解的简单入门小案例

    这篇文章主要介绍了Java注解的简单入门小案例,注解是干什么的?怎么使用?注解的简单用法,需要的朋友可以参考下
    2023-04-04
  • Java中的try-catch块和异常捕获方式

    Java中的try-catch块和异常捕获方式

    这篇文章主要介绍了Java中的try-catch块和异常捕获方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • Spring Boot 中的 @EnableDiscoveryClient 注解的原理

    Spring Boot 中的 @EnableDiscoveryClient 注解

    @EnableDiscoveryClient 注解是 Spring Boot 应用程序注册到服务注册中心的关键注解,这篇文章主要介绍了Spring Boot 中的 @EnableDiscoveryClient 注解,需要的朋友可以参考下
    2023-07-07
  • SpringBoot项目集成Smart-Doc的实战指南

    SpringBoot项目集成Smart-Doc的实战指南

    Smart-Doc是一款强大的基于Java的API文档生成工具,它通过对接口源代码进行分析来生成全面而准确的文档,完全不需要对代码进行任何注入,下面我们看看如何在SpringBoot项目中集成Smart-Doc吧
    2025-10-10
  • Java 如何使用@Autowired注解自动注入bean

    Java 如何使用@Autowired注解自动注入bean

    这篇文章主要介绍了Java 使用@Autowired注解自动注入bean的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • SpringBoot实现基于URL和IP的访问频率限制

    SpringBoot实现基于URL和IP的访问频率限制

    在现代 Web 应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用 Spring Boot 实现基于 URL 和 IP 的访问频率限制吧
    2025-01-01
  • 解决spring boot启动扫描不到自定义注解的问题

    解决spring boot启动扫描不到自定义注解的问题

    这篇文章主要介绍了解决spring boot启动扫描不到自定义注解的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Spring Boot开启远程调试的方法

    Spring Boot开启远程调试的方法

    这篇文章主要介绍了Spring Boot开启远程调试的方法,帮助大家更好的理解和使用Spring Boot框架,感兴趣的朋友可以了解下
    2020-10-10

最新评论