Spring定时任务事务回滚并且对异常进行统一处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring定时任务事务回滚并且对异常进行统一处理相关的知识,希望对你有一定的参考价值。

参考技术A /**

* 定时任务配置

* @author congyiqun

* @since 2021-05-31

*/

@Slf4j

@Configuration

@EnableScheduling //开启定时任务

public class SchedulingConfimplements SchedulingConfigurer

private final ThreadPoolTaskSchedulertaskScheduler;

public SchedulingConf()

        taskScheduler =new ThreadPoolTaskScheduler();

        taskScheduler.setErrorHandler(throwable ->log.error(ExceptionUtils.getStackTrace(throwable)));

        taskScheduler.setThreadNamePrefix("@scheduled-");

        taskScheduler.initialize();

   

@Override

public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar)

        scheduledTaskRegistrar.setScheduler(taskScheduler);

   

Spring管理事务默认回滚的异常

一、默认方式

Spring的事务管理默认只对出现运行期异常(java.lang.RuntimeException及其子类),Error进行回滚。 
如果一个方法抛出Exception或者Checked异常,Spring事务管理默认不进行回滚。

二、改变默认方式 
在@Transaction注解中定义noRollbackFor和RollbackFor指定某种异常是否回滚。 
@Transaction(noRollbackFor=RuntimeException.class) 
@Transaction(RollbackFor=Exception.class) 
这样就改变了默认的事务处理方式。

以上是关于Spring定时任务事务回滚并且对异常进行统一处理的主要内容,如果未能解决你的问题,请参考以下文章

springboot 统一异常处理

Spring事务管理只对出现运行期异常进行回滚

spring事务失效的几种场景以及原因

Spring事务管理只对出现运行期异常进行回滚

spring事务管理中,用try-catch处理了异常,事务也会回滚?

Spring事务的机制