springboot dubbo无法整合spring事务解决方案

在springboot整合dubbo进行RPC调用时,发现在service层加上@Transactional注解后注册dubbo服务失败。查询得知dubbo版本过低,不支持事务。虽然找到了解决方案,但是自己还是摸索了很久才解决,所以将自己的填坑过程总结如下:

一、升级版本-添加依赖

将dubbo和zookeeper的版本都进行升级


    
        com.alibaba
        dubbo
        2.6.2
        
            
                log4j
                log4j
            
        
    
    
    
        com.101tec
        zkclient
        0.10
    

二、填坑

启动报错:

SLF4J: Class path contains multiple SLF4J bindings.
...
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
...
...

因为zkclient在0.7版本之后将log4j替换成了slf4j,因为缺少依赖报错,添加maven依赖:


        org.slf4j
        slf4j-log4j12
        1.7.21
        test

再次启动,报错:

Caused by: java.lang.ClassNotFoundException: org.apache.curator.framework.CuratorFrameworkFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_111]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_111]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_111]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_111]
... 49 common frames omitted

没有找到CuratorFrameworkFactory,添加依赖:

    
        org.apache.curator
        curator-framework
        2.12.0
    

再次启动,启动成功!进入dubbo-admin查看:

springboot dubbo无法整合spring事务解决方案_第1张图片

服务提供方已经注册成功了,但是服务名是一个代理服务,没关系,在提供服务的service注解上指定接口名称,如下:

@Service(interfaceName="com.yvpai.www.service.UserService")

重新启动,再次访问dubbo-admin查看,发现服务名已改成UserService

springboot dubbo无法整合spring事务解决方案_第2张图片

启动消费者,测试事务回滚正常!

三、补充

网上有的说要加下面两个配置,应该是跟AOP有关,我这里没有配置,如果有需要的小伙伴可以参考下:

1.在启动类加上相应注解

@SpringBootApplication
@EnableTransactionManagement
@EnableAspectJAutoProxy
public class YvpaiWebApplication {

public static void main(String[] args) {
        SpringApplication.run(YvpaiWebApplication.class, args);
    }
}

在springboot启动类上加上@EnableTransactionManagement注解表示开启事务管理,加上 @EnableAspectJAutoProxy表示开启AOP代理自动配置

2.在application.properties配置文件中加入以下配置

spring.aop.proxy-target-class=true

访问我的达人课

访问我的博客 Wang's Blog

关注我的微信公众号获取更多资源

springboot dubbo无法整合spring事务解决方案_第3张图片

 

你可能感兴趣的:(Dubbo)