配置项 | 描述 |
---|---|
@EnableTransactionManagement | 在配置类上添加@EnableTransactionManagement ,启用Spring的注解驱动事务管理功能。该注解将自动创建基于配置的基础设施,如PlatformTransactionManager,用于管理事务。 |
@Transactional | 在需要进行事务管理的方法或类上添加@Transactional 注解。这个注解标识了被注解的方法或类应该被包装在一个事务中。你可以通过给@Transactional 注解传递一些参数来定制事务的属性,比如隔离级别、传播行为、事务超时等。 |
PlatformTransactionManager | 在Spring配置文件中配置一个PlatformTransactionManager 实现,如DataSourceTransactionManager ,HibernateTransactionManager 等。这个事务管理器负责管理和协调事务的执行。它使用底层的事务策略(如数据库的JDBC事务)来实现事务管理功能。 |
<tx:annotation-driven> | 在Spring配置文件中使用<tx:annotation-driven> 元素,启用基于注解的事务管理。它会自动检测标有@Transactional 注解的类和方法,并针对这些注解配置相应的事务通知。这个元素还可以配置一些其他的属性,如事务管理器、事务属性源(TransactionAttributeSource)等。 |
PROPAGATION | PROPAGATION 是@Transactional 注解类中的一个属性,用于定义事务的传播行为。它可以有多个选项可供选择,如REQUIRED 、REQUIRES_NEW 、NESTED 等。每个选项都有不同的语义和用途,以适应不同的业务场景。通过这个属性,可以控制事务方法之间事务的传播方式,从而保持数据的一致性。 |
ISOLATION | ISOLATION 是@Transactional 注解类中的一个属性,用于定义事务的隔离级别。它规定了事务应该如何与并发执行的事务进行隔离,以防止不同事务之间的干扰和数据损坏。常见的隔离级别包括DEFAULT 、READ_UNCOMMITTED 、READ_COMMITTED 、REPEATABLE_READ 和SERIALIZABLE 等。根据具体的需求,选择适当的隔离级别来确保数据的正确性。 |
TIMEOUT | TIMEOUT 是@Transactional 注解类中的一个属性,用于定义事务的超时时间。它指定事务可以在超过指定时间后自动回滚。通过设置适当的超时时间,可以避免事务因为长时间锁定资源而导致的性能问题。 |
rollbackFor | rollbackFor 是@Transactional 注解类中的一个属性,用于定义哪些异常触发事务的回滚操作。可以使用该属性来指定特定的异常类型,如果出现这些异常,事务将会被回滚。这对于捕获和处理特定的异常情况非常有用,以确保数据的一致性。 |
noRollbackFor | noRollbackFor 是@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 {
// 业务逻辑
}