解决SpringBoot自定义注解在方法上失效的问题

上次对项目进行了多数据源改造,已经成功实现,但在部分接口上发现了问题,有一些接口一旦用了两个数据源,那么就只会在调用的接口实现方法,也就是主方法上的注解成效,而内部调用的方法上的自定义注解不生效,导致我这个接口需要有两个数据源的数据进行业务处理,但就报错说找不到对应的表那些。 

后面参考看了这篇博客解决内部调用自定义注解的方法失效问题_我两年升高级的博客-CSDN博客_自定义注解失效才了解到,AOP在service方法的内部调用时,无法进入切面处理。。。现在就把这个问题记录下来,防止后面的同学踩坑。

首先,需要在启动类上加上注解

@EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)

看了一下这个注解的源码,注解后面的参数true也要加上,因为默认全是false。。 

 

接下来就是在我们的内部调用方法,加上判断,在调用内部方法也用当前这个代理去处理。

if (null != AopContext.currentProxy()) {
	((MyService)AopContext.currentProxy()).methodB();
} else {
    methodB();
}

这样就解决了,成功实现在一个接口上用两个数据源的数据进行业务处理的逻辑,完美

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值