我是靠谱客的博主 苗条夕阳,最近开发中收集的这篇文章主要介绍被事务代理的spring service 使用注解方式发布Dubbo服务,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 使用 @com.alibaba.dubbo.config.annotation.Service 发布dubbo服务的时候,当服务类没有加入@Transactional的时候没有问题.

但是当加入事务后【@Transactional】, dubbo的 AnnotationBean 扫描 类执行下面的代码的时候就获取不到对应的注解,也就发布不了服务。

究其原因,是因为Dubbo提供的注解没有@Inherited元注解。


我们通过@Transactional标注过的Service产生一个代理类,这个代理类有两种生成方式。一种是jdk动态代理,一种是CGLib动态代理。

jdk动态代理生成的代理类与当前类共同实现相同的接口,所以与当前类也只是间接调用的关心,不在此次讨论范围。

CGLib生成的代理类为当前Service的子类,可以集成到当前Service的注解。

根据需求,我们需要更改Dubbo的源码



在Dubbo的Service注解上加上@Inherited,使这个注解变成可继承的。

然后再当前项目的spring的主配置文件中强制所有bean使用CGLib代理


这样服务即可正常发布。


最后

以上就是苗条夕阳为你收集整理的被事务代理的spring service 使用注解方式发布Dubbo服务的全部内容,希望文章能够帮你解决被事务代理的spring service 使用注解方式发布Dubbo服务所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部