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代理类,从而解决此问题

spring boot 代理(not eligible for auto-proxying)的更多相关文章

  1. 使用Spring Session实现Spring Boot水平扩展

    小编说:本文使用Spring Session实现了Spring Boot水平扩展,每个Spring Boot应用与其他水平扩展的Spring Boot一样,都能处理用户请求.如果宕机,Nginx会将请 ...

  2. Spring Boot实践——Spring AOP实现之动态代理

    Spring AOP 介绍 AOP的介绍可以查看 Spring Boot实践——AOP实现 与AspectJ的静态代理不同,Spring AOP使用的动态代理,所谓的动态代理就是说AOP框架不会去修改 ...

  3. 使用nginx对spring boot项目进行代理

    摘要:使用nginx对spring boot项目进行反向代理,并且使用轮询均衡负载策略 均衡负载与集群 集群和均衡都涉及到多个机器提供的服务的问题 不同点是,集群是互相通信.协同的的多个服务,服务之前 ...

  4. Spring AOP动态代理实现,解决Spring Boot中无法正常启用JDK动态代理的问题

    Spring AOP底层的动态代理实现有两种方式:一种是JDK动态代理,另一种是CGLib动态代理. JDK动态代理 JDK 1.3版本以后提供了动态代理,允许开发者在运行期创建接口的代理实例,而且只 ...

  5. spring boot 四大组件之Auto Configuration

    SpringBoot 自动配置主要通过 @EnableAutoConfiguration, @Conditional, @EnableConfigurationProperties 或者 @Confi ...

  6. 曹工说Spring Boot源码(19)-- Spring 带给我们的工具利器,创建代理不用愁(ProxyFactory)

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  7. 基于Servlet体系的HTTP请求代理转发Spring Boot组件

    背景概述 两个项目组原本都是各自负责两个产品线(产品A.产品B),由于公司业务的发展,目前需要将两个产品合并成一个大产品(功能整合,部分做取舍,最终产出产品C),前后端代码必然也需要整合,包括两个产品 ...

  8. spring boot / cloud (十五) 分布式调度中心进阶

    spring boot / cloud (十五) 分布式调度中心进阶 在<spring boot / cloud (十) 使用quartz搭建调度中心>这篇文章中介绍了如何在spring ...

  9. spring boot + vue + element-ui全栈开发入门——基于Electron桌面应用开发

     前言 Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库. Electron通过将Chromium和Node.js合并到同一个运行时环 ...

随机推荐

  1. 【Selenium-WebDriver问题篇】Selenium实现元素的拖拽(java版)(转)

    https://blog.csdn.net/u010503127/article/details/51381284 Selenium实现元素的拖拽(java版) [前言] 自从淘宝网登陆页出现滑块验证 ...

  2. day4----函数-闭包-装饰器

    本文档内容: 1 python中三种名称空间和作用域 2 函数的使用 3 闭包 4 装饰器 一 python中三种名称空间和作用域 1.1名称空间: 当程序运行时,代码从上至下依次执行,它会将变量与值 ...

  3. nodejs基础学习1

    ES6常用新语法 ES6新语法 什么是ES6? 由于JavaScript是上个世纪90年代,由Brendan Eich在用了10天左右的时间发明的:虽然语言的设计者很牛逼,但是也扛不住"时间 ...

  4. 代码:jquery小效果—— 吸顶

    吸顶: 可以防止滚屏过程中,代码被多次调用 <script src="http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"& ...

  5. Spark面对OOM问题的解决方法及优化总结 (转载)

    转载地址: http://blog.csdn.net/yhb315279058/article/details/51035631     Spark中的OOM问题不外乎以下两种情况 map执行中内存溢 ...

  6. [Writeup]二维码的一个题

    [Writeup]二维码的一个题 瓜皮感觉难出题眼,恶魔暴力膜法初现 看题 一个二维码,扫出来是where is the flag?(where is my mind?) 先感觉 用binwalk扫一 ...

  7. leetcode1021

    class Solution(object): def removeOuterParentheses(self, S: str) -> str: li = list() bcode = 0 te ...

  8. [记录] Linux Apache隐藏index.php

    1. 在项目更目录下新建 .htaccess <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEng ...

  9. FDLocalSQL

    FDLocalSQL http://docwiki.embarcadero.com/Libraries/Berlin/en/FireDAC.Phys.SQLiteVDataSet.TFDLocalSQ ...

  10. day38-常见第三方模块

    1.requests模块 2.psutil模块 3.xlrd模块 4.xlwt模块 5.Paramiko模块