zoukankan      html  css  js  c++  java
  • spring boot 代理(not eligible for auto-proxying)

    spring 事务机制网上的案例很多,关于事务 不能回滚也有很多的类型,不同的问题有不同的处理方案,本篇博客主要介绍两种事务不能回滚的问题解决方案:

    问题一:
        在同一个对象中有两个方法,分别未方法A,方法B(添加了事务),在方法A中调用方法B,出现了事务不能回滚的情况:

    /**
    * 方法A
    */
    public void methodA(){
    System.out.println("I an methodA ...");
    }
    /**
    * 方法B
    */
    @Transactional
    public void methodB(){
    System.out.println("I an methodB ...");
    //手动回滚事务
    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
    }


    此时报异常

    org.springframework.transaction.NoTransactionException: No transaction aspect-managed TransactionStatus in scope
    解决方案:新建一个类,将方法B放在新建的类中,定义格式不变,然后在原来的类中调用即可,这是因为spring的事务依赖的是AOP,spring在初始化bean 是生成了一个代理类,在第一个方法中有代理类的存在,调用本类其他方法是是使用的对象本身而不是代理类,故而事务不能回滚。

    问题二:
        springboot项目中不知因为什么原因有些service未生成代理类,在启动时:

    is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying
    虽然此条日志信息时info级别的不影响正常的运行。可是出现此问题的类中service 就是不回滚,不知道此问题的原因,有知道的烦请告知一二,万分感谢。

    解决方案:在此类中添加注解  

    @Scope(proxyMode = ScopedProxyMode.INTERFACES)
    此注解意思是生成一个jdk代理类,从而解决此问题

  • 相关阅读:
    ZZ
    Qt5获取网卡/IP等信息
    platforms
    [转]如何使用VS 2013發布一個可以在Windows XP中獨立運行的可執行文件
    spring cloud 服务提供者
    spring cloud: eureka搭建
    通过maven 上传jar 到nexus3,cong nexus3下载jar
    搭建turbine时 hystrix MaxConcurrentConnections reached 异常
    Zuul超时问题,微服务响应超时,zuul进行熔断
    微信公众号开发网址
  • 原文地址:https://www.cnblogs.com/jtlgb/p/10297371.html
Copyright © 2011-2022 走看看