@Transactional 是一个Spring框架中的注解,用于声明办法或类中的业务行为。它能够在办法或类等级上符号,用于指定被注解的办法或类应该以业务办法执行。

运用 @Transactional 注解能够为办法或类添加一些业务特点,如业务的传达行为、阻隔等级、超时设置等。这些特点能够操控业务的行为,确保数据的一致性和完整性。

常用特点

以下是 @Transactional 注解的一些常用特点:

  1. propagation(传达行为):用于指定业务的传达行为,界说了被注解办法与已存在的业务之间的交互联系。常用的传达行为包含 PROPAGATION_REQUIRED、PROPAGATION_REQUIRES_NEW、PROPAGATION_SUPPORTS 等,默认值为 PROPAGATION_REQUIRED。

  2. isolation(阻隔等级):用于指定业务的阻隔等级,界说了业务之间的阻隔程度。常用的阻隔等级包含 ISOLATION_DEFAULT、ISOLATION_READ_UNCOMMITTED、ISOLATION_READ_COMMITTED、ISOLATION_REPEATABLE_READ、ISOLATION_SERIALIZABLE 等,默认值为 ISOLATION_DEFAULT。

  3. timeout(超时设置):用于指定业务的超时时间,单位为秒。假如业务在指定的时间内没有完结,将被强制回滚。默认值为 -1,表明没有超时约束。

  4. readOnly(只读业务):用于指定业务是否为只读业务。假如设置为 true,表明业务只读,不会对数据库进行写操作。默认值为 false。

  5. rollbackFor(回滚反常):用于指定哪些反常触发业务回滚。能够指定一个或多个反常类型。

  6. noRollbackFor(不回滚反常):用于指定哪些反常不会触发业务回滚。能够指定一个或多个反常类型。

示例

示例用法:

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class MyService {
    @Transactional
    public void performTransaction() {
        // 业务操作...
    }
    @Transactional(rollbackFor = Exception.class, timeout = 60)
    public void performTransactionWithAttributes() {
        // 含有业务特点的业务操作...
    }
}

在上面的示例中,MyService 类符号了 @Transactional 注解,表明其所有的办法都将以业务办法执行。其中,performTransactionWithAttributes 办法运用了一些业务特点,如设置了回滚反常类型为 Exception、超时时间为 60 秒。

@Transactional 注解能够应用于类等级和办法等级。当应用于类等级时,表明该类的所有办法都将选用相同的业务特点,除非在办法等级上对 @Transactional 进行覆盖。在办法等级上运用 @Transactional 注解,能够针对每个办法设置不同的业务特点。

需要留意的是,@Transactional 注解需要与 Spring 业务管理器一起运用。能够配置适当的业务管理器并启用业务管理功用,以便 @Transactional 注解能够生效。