spring事务注解哪些
-
Spring框架提供了一些事务注解,用于管理和控制事务的行为。以下是常见的Spring事务注解:
-
@Transactional:该注解可用于类或方法级别。当该注解应用于类级别时,表示该类的所有公共方法都将被事务管理;当应用于方法级别时,表示该方法将被事务管理。
该注解可以用于标记事务的传播行为、隔离级别、回滚规则等。通过在方法上添加该注解,可以将方法的执行封装为一个事务,保证了事务的一致性和完整性。 -
@Transactional(propagation):指定事务的传播行为,默认为REQUIRED。常用的传播行为包括:
- REQUIRED:如果当前存在事务,则加入当前事务,如果没有事务,则创建一个新事务。
- REQUIRES_NEW:将当前事务挂起,并创建一个新事务。
- SUPPORTS:如果当前存在事务,则加入当前事务;如果没有事务,则以非事务的方式执行。
- NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则将其挂起。
- MANDATORY:如果当前存在事务,则加入当前事务;如果没有事务,则抛出异常。
- NEVER:以非事务方式执行操作,如果当前存在事务,则抛出异常。
-
@Transactional(isolation):指定事务的隔离级别,默认为DEFAULT。常用的隔离级别包括:
- DEFAULT:使用底层数据库的默认隔离级别。
- READ_UNCOMMITTED:最低的隔离级别,允许脏读、不可重复读和幻读。
- READ_COMMITTED:允许不可重复读和幻读,但禁止脏读。
- REPEATABLE_READ:禁止不可重复读和脏读,但允许幻读。
- SERIALIZABLE:最高的隔离级别,禁止不可重复读、脏读和幻读。
-
@Transactional(readOnly):指定事务的只读属性,默认为false。如果设置为true,则表示当前事务只读,禁止对数据库进行修改操作,只允许查询操作。
-
@Transactional(timeout):指定事务的超时时间,单位为秒。如果事务执行时间超过指定的超时时间,则事务将被自动回滚。
这些事务注解可以根据项目的需求灵活应用,用于管理和控制Spring框架中的事务行为。
1年前 -
-
在Spring中,事务注解是一种简化数据库事务管理的方式。通过使用事务注解,可以在方法或类级别上声明事务的行为,使得在方法执行期间自动开启、提交或回滚事务,从而提供数据一致性和可靠性。
下面是一些常用的Spring事务注解:
-
@Transactional:
- @Transactional 注解可以应用在类级别或方法级别上。当应用在类级别上时,该类中的所有方法都将应用相同的事务规则。
- 该注解告诉Spring框架该方法或类应该以事务的方式执行。如果方法执行成功,事务将自动提交。如果方法执行失败,事务将自动回滚。
- @Transactional注解可以配置多个属性,例如传播行为、隔离级别和超时时间等。
-
@EnableTransactionManagement:
- @EnableTransactionManagement 注解用于启用Spring的事务管理功能。
- 在应用的配置类上添加该注解后,Spring将会扫描并解析带有 @Transactional 注解的方法,并自动为其创建一个事务代理。
-
@Transactional(propagation):
- @Transactional 注解的 propagation 属性用于指定事务的传播行为。
- 事务的传播行为定义了Spring方法调用时,当前方法的事务如何与现有事务进行交互。
- 常用的传播行为包括 REQUIRED(如果存在当前事务,则加入到当前事务中),REQUIRES_NEW(每次都创建新的事务)等。
-
@Transactional(isolation):
- @Transactional 注解的 isolation 属性用于指定事务的隔离级别。
- 数据库事务的隔离级别定义了一个事务在处理并发时与其他事务的关系。
- 常用的隔离级别包括 READ_UNCOMMITTED(允许事务读取未提交的数据),READ_COMMITTED(只能读取已经提交的数据)等。
-
@Transactional(rollbackFor)和@Transactional(noRollbackFor):
- @Transactional 注解的 rollbackFor 属性用于指定需要回滚事务的异常类型。
- @Transactional 注解的 noRollbackFor 属性用于指定不需要回滚事务的异常类型。
- 通过设置这两个属性,可以精确控制事务在遇到特定异常时是否回滚。
需要注意的是,事务注解只能应用于代理对象上,而不是被调用的对象上。因此,如果在一个类的内部调用另一个方法时,事务注解可能不会起作用。为了确保事务生效,应将方法提取到另一个类中,并通过依赖注入方式使用。
1年前 -
-
在Spring框架中,有一系列的事务注解可以使用来管理事务。这些注解提供了简便的方式来声明和控制事务的行为。下面是常用的Spring事务注解:
-
@Transactional:这是最常见的事务注解,用于声明一个方法是一个事务方法。当一个方法标记有@Transactional注解时,Spring框架会在方法的开始处启动一个新的事务,并在方法的结束处提交或回滚事务,根据方法的执行情况来决定。@Transactional还可以用在类级别上,表示所有该类的方法都是事务方法。
-
@Transactional(propagation):这个注解用于指定事务的传播行为。在声明事务方法时,可以通过传播行为来控制事务的范围。常用的传播行为包括:
- REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
- REQUIRES_NEW:每次都创建一个新的事务,并挂起当前的事务。
- SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式执行。
- NOT_SUPPORTED:以非事务的方式执行,如果当前存在事务,则挂起该事务。
- MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
- NEVER:以非事务的方式执行,如果当前存在事务,则抛出异常。
-
@Transactional(isolation):这个注解用于指定事务的隔离级别。事务的隔离级别定义了事务对数据的可见性范围。常用的隔离级别包括:
- DEFAULT:使用默认的隔离级别。
- READ_UNCOMMITTED:允许脏读、幻读和不可重复读。
- READ_COMMITTED:禁止脏读,但允许幻读和不可重复读。
- REPEATABLE_READ:禁止脏读和不可重复读,但允许幻读。
- SERIALIZABLE:禁止脏读、不可重复读和幻读。
-
@Transactional(readOnly):这个注解用于指定事务是否为只读。如果将readOnly属性设置为true,则事务只能读取数据,不能修改数据。通过设置事务为只读可以提高事务的性能效率。
-
@Transactional(rollbackFor):这个注解用于指定哪些异常会导致事务回滚。默认情况下,Spring框架会将所有的运行时异常和Error都作为回滚异常处理。但可以通过rollbackFor属性来指定其他异常。只有当抛出的异常类型是rollbackFor属性中指定的类型或其子类时,事务才会回滚。
-
@Transactional(noRollbackFor):这个注解用于指定哪些异常不会导致事务回滚。使用方法与rollbackFor属性类似,只不过是指定不回滚的异常类型。
除了以上这些常用的事务注解外,Spring还提供了一些其他的事务注解,如@TransactionConfiguration、@EnableTransactionManagement等。这些注解可以根据具体的需求选择使用。在使用事务注解时,可以将其应用于方法级别或类级别,根据需要灵活地进行配置。同时,也需要确保正确配置了数据库连接和事务管理器,以便Spring框架能够正确地管理事务。
1年前 -