修复dubbo注解与spring aop冲突的问题

在使用dubbo2.8.4版本的时候,项目中有使用spring的声明式事务,dubbo的服务暴露使用了注解,发现服务一直没被监测到,后面查看源码debug,才发现dubbo有个bug,需要改动源码来修复。


找到com.alibaba.dubbo.config.spring.AnnotationBean类,然后修改


public Object postProcessAfterInitialization(Object bean, String beanName)方法的139行:

if(isProxyBean(bean)){
	  clazz = AopUtils.getTargetClass(bean);
}
//还没有获取到原始的calss对象,需要进一步解析
if ("$$".contains(clazz.getName())) {
	clazz = getSuperclass();	
//如果获取值还是代理,则需要进一步解析
if (clazz.getSimpleName().contains("$$")) {
	clazz = clazz.getSuperclass();
}
  
Service service = clazz.getAnnotation(Service.class);

public Object postProcessBeforeInitialization(Object bean, String beanName)方法的217行:

if(isProxyBean(bean)){
	  clazz = AopUtils.getTargetClass(bean);
}
 //还没有获取到原始的calss对象,需要进一步解析
 if ("$$".contains(clazz.getName())) {
	clazz = getSuperclass();	
 //如果获取值还是代理,则需要进一步解析
if (clazz.getSimpleName().contains("$$")) {
	clazz = clazz.getSuperclass();
}
  
Method[] methods = clazz.getMethods();


修改完后,重新编译,然后将此类替换掉下载的jar包里的类。ps:jar包可以看成压缩包的形式打开。

转载于:https://www.cnblogs.com/catgwj/p/7503301.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值