26-事务相关配置

文章介绍了Spring框架中注解驱动的事务管理机制,包括在配置类上使用`@EnableTransactionManagement`启用事务管理,`@Transactional`注解用于标记需事务管理的方法或类,以及PlatformTransactionManager的角色。此外,还提到了`<tx:annotation-driven>`元素在配置文件中的作用,事务的传播行为(PROPAGATION)、隔离级别(ISOLATION)、超时时间(TIMEOUT)以及异常处理(rollbackFor和noRollbackFor)等关键概念。
摘要由CSDN通过智能技术生成
配置项描述
@EnableTransactionManagement在配置类上添加@EnableTransactionManagement,启用Spring的注解驱动事务管理功能。该注解将自动创建基于配置的基础设施,如PlatformTransactionManager,用于管理事务。
@Transactional在需要进行事务管理的方法或类上添加@Transactional注解。这个注解标识了被注解的方法或类应该被包装在一个事务中。你可以通过给@Transactional注解传递一些参数来定制事务的属性,比如隔离级别、传播行为、事务超时等。
PlatformTransactionManager在Spring配置文件中配置一个PlatformTransactionManager实现,如DataSourceTransactionManagerHibernateTransactionManager等。这个事务管理器负责管理和协调事务的执行。它使用底层的事务策略(如数据库的JDBC事务)来实现事务管理功能。
<tx:annotation-driven>在Spring配置文件中使用<tx:annotation-driven>元素,启用基于注解的事务管理。它会自动检测标有@Transactional注解的类和方法,并针对这些注解配置相应的事务通知。这个元素还可以配置一些其他的属性,如事务管理器、事务属性源(TransactionAttributeSource)等。
PROPAGATIONPROPAGATION 是@Transactional注解类中的一个属性,用于定义事务的传播行为。它可以有多个选项可供选择,如REQUIREDREQUIRES_NEWNESTED等。每个选项都有不同的语义和用途,以适应不同的业务场景。通过这个属性,可以控制事务方法之间事务的传播方式,从而保持数据的一致性。
ISOLATIONISOLATION 是@Transactional注解类中的一个属性,用于定义事务的隔离级别。它规定了事务应该如何与并发执行的事务进行隔离,以防止不同事务之间的干扰和数据损坏。常见的隔离级别包括DEFAULTREAD_UNCOMMITTEDREAD_COMMITTEDREPEATABLE_READSERIALIZABLE等。根据具体的需求,选择适当的隔离级别来确保数据的正确性。
TIMEOUTTIMEOUT 是@Transactional注解类中的一个属性,用于定义事务的超时时间。它指定事务可以在超过指定时间后自动回滚。通过设置适当的超时时间,可以避免事务因为长时间锁定资源而导致的性能问题。
rollbackForrollbackFor 是@Transactional注解类中的一个属性,用于定义哪些异常触发事务的回滚操作。可以使用该属性来指定特定的异常类型,如果出现这些异常,事务将会被回滚。这对于捕获和处理特定的异常情况非常有用,以确保数据的一致性。
noRollbackFornoRollbackFor 是@Transactional注解类中的一个属性,用于定义哪些异常不触发事务的回滚操作。可以使用该属性来指定特定的异常类型,如果出现这些异常,事务将不会被回滚。这对于需要在出现特定异常时继续执行事务的情况非常有用。

timeout(超时时间):这个属性用于定义事务的超时时间,即事务可以被允许的最长执行时间。

@Transactional(timeout = 10)
public void doSomething() {
    // 业务逻辑
}

rollbackFor:这个属性用于定义触发事务回滚的异常类型。 

@Transactional(rollbackFor = {SQLException.class, IOException.class})
public void doSomething() throws SQLException, IOException {
    // 业务逻辑
}

noRollbackFor:这个属性用于定义不触发事务回滚的异常类型。

@Transactional(noRollbackFor = {CustomException.class})
public void doSomething() throws CustomException {
    // 业务逻辑
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值