修復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包可以看成壓縮包的形式打開。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章