药企做网站区块链开发语言
web/
2025/10/2 11:56:22/
文章来源:
药企做网站,区块链开发语言,合肥备案,财税公司做网站问题场景#xff1a;
今天在springboot中集成spring事务的时候#xff0c;遇到了一个大坑。如果#xff08;springbootdubbo#xff09;中添加 Service、Transactional 两个注解的时候#xff0c;就不能进行dubbo服务注册了。
解决历程#xff1a;
1#xff0c;先是在…问题场景
今天在springboot中集成spring事务的时候遇到了一个大坑。如果springbootdubbo中添加 Service、Transactional 两个注解的时候就不能进行dubbo服务注册了。
解决历程
1先是在springboot启动类添加注解EnableTransactionManagement在对应的服务实现类上添加Transactional。然后发现不能正常发布dubbo服务了没有报错但dubbo-admin就是没有收到服务注册。搜索一下发现dubbo版本低老版本不支持注解的事务于是提高到dubbo2.6.2版本。
启动类 服务类 2提高版本到dubbo2.6.2后还是不行又搜索一下发现springboot的事务需要我们打开aop才可以springboot开启aop需要添加aop相关的依赖然后再在启动类中添加EnableAspectJAutoProxy注解就可以开启aop功能了。然后我们还需要在application.yml添加spring.aop.proxy-target-classtrue试了试可以了但是消费端说找不到服务腚眼一看发现dubbo-admin里的服务是个代理org.springframework.aop.SpringProxy。
启动类中添加EnableAspectJAutoProxy注释 application.yml配置 aop依赖
!--springboot上面添加aop--
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId/dependency3虽然能提供服务但不能被消费者找到继续搜索需要在具体实现类里的Service上添加(version “1.0.0”,interfaceClass*.class),才可以需要将接口的类名写入才可以在dubbo-admin里正常展现服务接口然后调用可以做到事务回滚了。
服务提供方 服务消费方 注意 1首先提升dubbo的版本到2.6以后再就是需要明确接口名称。 2好多文章说要么注解实现dubbo配置文件实现Transactional要么注解实现Transactional配置文件实现dubbo不能同时注解两个应该是老版本原因现在可以同时支持了。
高能预警
springbootdubbo比较坑的是需要实现io.dubbo.springboot依赖但是io.dubbo.springboot中包含的dubbo是dubbo:2.5.3而且没有高版本的dubbo依赖了那怎么办呢。。。。纠结了一下午突然想到一个方案然后顺利的解决这个问题了。
解决方案
我们可以通过exclusions去除io.dubbo.springboot中的dubbo:2.5.3然后再重新添加dubbo:2.6.2依赖就可以了。如果大家觉得这样就已经解决的话那就大错特错了因为你们会出现如下的错误 1 java.lang.NoClassDefFoundError: org/I0Itec/zkclient/IZkStateListener 2 java.lang.NoClassDefFoundError: org/apache/zookeeper/WatcherEventEventEventKeeperState 3 java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy
大家从报错的信息就可以看出来是缺少对应的依赖我们只要添加对应的依赖就可以了。
!--spring-boot-dubbo依赖--dependencygroupIdio.dubbo.springboot/groupIdartifactIdspring-boot-starter-dubbo/artifactIdversion1.0.0/versionexclusions!--去除com.alibaba依赖--exclusiongroupIdcom.alibaba/groupIdartifactIddubbo/artifactId/exclusion/exclusions/dependency!--添加2.6.2的dubbo依赖--dependencygroupIdcom.alibaba/groupIdartifactIddubbo/artifactIdversion2.6.2/version/dependency!--zookeeper客户端相关的curator依赖--dependencygroupIdorg.apache.curator/groupIdartifactIdcurator-framework/artifactIdversion2.8.0/version/dependency!--添加zookeeper依赖--dependencygroupIdorg.apache.zookeeper/groupIdartifactIdzookeeper/artifactIdversion3.4.5/version/dependencydubbo全部的配置文件 这样一波三折之后终于解决Service、Transactional 同时存在时候无法提供服务或者无法提供事务的问题了。真的简直坑的一批这种依赖配置相关的问题是最恶心的因为它不会报错所以需要从方方面面猜测问题的原因才可以不过虽然很坑但是还好问题得到解决。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85600.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!