在catch语块中增加TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
import org.springframework.transaction.interceptor.TransactionAspectSupport;
try {
            
} catch (Exception e)            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-07-14 14:21:33
                            
                                968阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Spring事务的原理Spring事务的本质其实就是数据库Innodb对事务的支持,没有innodb是事务支持,spring是无法提供事务支持的。真正的数据库层的事务提交和回滚是通过binlog或者redo log实现的。对于纯jdbc操作数据库,想要用到事务,需要按照以下的步骤进行:获取连接Connection connection = DriverManager.getConnection(u            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-06 21:33:09
                            
                                100阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、场景    由于最近所做的工作全部是接口对于数据库CURD操作,其中很多场景需要保证操作一致性。例如删除一个班级实体,需要先删除班级下的用户,再将用户班级关系存入历史,将班级信息存入历史,再将班级删除。需要保证数据的一致性,数据提交操作回滚至异常发生前的状态。二、事务管理的目的   再出现异常的情况下,保证数据的一致性;数据提交操作回滚至异常发            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-26 13:03:52
                            
                                91阅读
                            
                                                                             
                 
                
                             
         
            
            
            
             使用Spring管理事务过程中,碰到过一些坑,因此也稍微总结一下,方便后续查阅。1.代码中事务控制的3种方式编程式事务:就是直接在代码里手动开启事务,手动提交,手动回滚。优点就是可以灵活控制,缺点就是太麻烦了,太多重复的代码了。声明式事务:就是使用SpringAop配置事务,这种方式大大的简化了编码。需要注意的是切入点表达式一定要写正确。注解事务:直接在Service层的方法上面加上@            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-14 23:31:12
                            
                                151阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Spring中事务分为编程时事务和声明式事务,编程式事务:编程人员通过代码控制事务的开启、回滚、提交,声明式事务:把事务的处理交给spring。使用注解@transactional配置就是声明式事务。基本配置在applicationContext.xml配置文件中1 //配置spring的DataSourceTransactionManager事务管理器
2 <bean id="transa            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-14 23:29:16
                            
                                240阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Spring控制事务回滚1、说明2、声明式性事务@Transacational3、@Transactional不适用场景4、@Transactional注解事务失效的几种场景及原因4.1、数据库引擎不支持事务4.2、添加事务的类没有被Spring管理4.3、@Transactional作用的方法不是public修饰的4.4、@Transactional的rollbackFor属性设置错误4.5、            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-15 17:08:29
                            
                                2924阅读
                            
                                                                             
                 
                
                             
         
            
            
            
             Service引入以下管理器:@Autowired
    DataSourceTransactionManager dataSourceTransactionManager;
    @Autowired
    TransactionDefinition transactionDefinition; 方法中开启事务://手动开启事务
        Transactio            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-14 23:31:22
                            
                                287阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在现代微服务架构中,Redis常常用作缓存和数据存储解决方案,但其事务处理能力与传统的数据库有所不同。通常情况下,Spring的事务管理是针对关系型数据库设计的,而Redis则采用了不同的机制来进行数据存取。这引发了一个问题:spring事务可以控制redis回滚吗?特别是在涉及业务逻辑的关键数据时,这个问题显得尤为重要。
### 问题背景
在我们的业务系统中,Redis被用作临时数据存储和缓            
                
         
            
            
            
             一、 spring 事务原理一、Spring事务原理 在使用JDBC事务操作数据库时,流程如下://获取连接 
1.Connection con = DriverManager.getConnection()
//开启事务
2.con.setAutoCommit(true/false);
3.执行CRUD
//提交事务/回滚事务 
4. con.commit() / con.rollb            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-23 22:59:21
                            
                                228阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1、检查数据库引擎设置是否正确,比如我们最常用的mysql,引擎MyISAM,是不支持事务操作的。需要改成InnoDB才能支持      检查结果:本地数据库引擎设置正确2、检查方法修饰符是否正确,方法必须是public,否则事务不起作用(这一点由Spring的AOP特性决定的,理论上而言,不public也能切入,但spring可能是觉得private自己用的方法,应            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-17 11:07:46
                            
                                94阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            AOP实现事务:使用try?c/atch包裹@Transactional注解的方法,当方法出现异常并满足一定条件时,在catch里可设置事务回滚,没有异常则直接提交事务。“一定条件”包括:只有异常传播出了标记了@Transactional注解的方法,事务才能回滚。在Spring的TransactionAspectSupport里有个 invokeWithinTransaction方法            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-22 17:22:23
                            
                                88阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            spring事务不回滚的处理方式(自己定义的方法中代码块加有try..catch..语句)一。1.通常在方法上加上@transactional注解,此时指的是没有加任何属性的,此时触发回滚条件是:抛出RuntimeException或者Error(常见的非RuntimeException不触发回滚)2.如果要在抛出 非RuntimeException时也触发回滚机制,需要我们在注解上添加 rol            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-10 22:06:27
                            
                                151阅读
                            
                                                                             
                 
                
                             
         
            
            
            
              一、使用场景举例  在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用。下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除某个部门的时候,假设我们默认删除对应的成员。但是在执行的时候可能会出现这种情况,我们先删除部门,再删除成员,但是部门删除成功了,删除成员的时候出异常了。这时候我们希望如果成员删除失败了,之前删除            
                
         
            
            
            
            事务控制设置手动回滚默认规则:1 让checked例外也回滚: @Transactional(rollbackFor=Exception.class),一般只需添加这个即可2 让unchecked例外不回滚: @Transactional(notRollbackFor=RunTimeException.class)3 不需要事务管理的(只查询的)方法:@Transactional(propagat            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-19 10:15:12
                            
                                107阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            问题:Spring框架的事务默认是RuntimeException才进行回滚解决方案:  修改 Transaction注解中的rollbackFor属性可以指定为exception异常回滚@Transactional(rollbackFor={Exception.class})              
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-14 23:30:44
                            
                                252阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            例如有业务需求,在catch异常后,catch块内把异常的信息存入到数据库,而catch外的数据全部回滚try {
  .......
   aaaService.save();
 
}catch(RuntimeException e) {
    bbbService.save(e.getMessage());
    throw new RuntimeException(e.getMessa            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-14 23:30:01
                            
                                266阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1.@SpringBootApplication  @SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan。  分开解释:(1)、@Configuration:提到@Configuration就要提到他的搭档@Bean。使用这两个注解就可以创建一个简单的spring配置类,可            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-06 05:14:13
                            
                                171阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1. 单层事务处理@Transactional(rollbackFor = Exception.class)  
public int method(Object obj) {  
    try {  
        doInsert(obj);  
        return 1;  
    } catch(Exception e) {  
        e.printStackTra            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-14 23:29:25
                            
                                213阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Spring中的事务回滚      1.代码中事务控制的3种方式编程式事务:就是直接在代码里手动开启事务,手动提交,手动回滚。优点就是可以灵活控制,缺点就是太麻烦了,太多重复的代码了。声明式事务:就是使用SpringAop配置事务,这种方式大大的简化了编码。需要注意的是切入点表达式一定要写正确。注解事务:直接在Service层的方法上面加上@Transactional注解,个            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-05 00:37:27
                            
                                193阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            工作原理运行配置@Transactional注解的测试类的时候,具体会发生如下步骤1)事务开始时,通过AOP机制,生成一个代理connection对象,并将其放入DataSource实例的某个与DataSourceTransactionManager相关的某处容器中。在接下来的整个事务中,客户代码都应该使用该connection连接数据库,执行所有数据库命令[不使用该connection连接数据库            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-16 22:43:02
                            
                                90阅读