最近在给一个项目配置事务时遇到这个问题,只要不加@Transactional注解一切都好,一加注解,就开始报错,从Controller层开始报错,所有调用服务层的方法都失败,而且dubbo-admin中看不到任何已注册服务。
经过反复尝试和测试,终于找到了问题所在:
在配置事务的时候,使用了CGlib代理(proxy-target-class="true"),为service生成代理类,而代理类是被代理类的子类,配置中的注解是加载被代理类上的,并不会被继承到代理子类上,所以在dubbo扫描注解的时候,并不能扫描到代理子类身上,所以也就出现了发布服务失败的现象,怎么解决呢?
我在网上搜了搜,找到的解决方案无非就三种,①用注解发布Service,用xml文件配置事务;
②用配置文件发布Service,用注解配置事务;
③修改 com.alibaba.dubbo.config.