首页天道酬勤事务注解transactional,transactional注解参数

事务注解transactional,transactional注解参数

张世龙 05-06 01:15 73次浏览

事务管理一般有两种类型:编程表达式和声明表达式。 与编程表达式相比,编程表达式更有用,因为它直接在代码中进行事务处理过程,而恶意表达式位于注释方法或xml文件中。

评论方式在@Transactional中很常见。 可以使用@EnableTransactionManagement注释启用事务管理功能。 可以将此注释添加到启动类中,也可以单独添加配置类进行处理。

1、事务性注释属性

如果name配置文件中有多个事务管理器,则可以使用此属性指定选择哪个事务管理器。

传播事务的传播行为。 默认值为REQUIRED。

隔离事务的隔离度。 默认值为DEFAULT。

timeout事务的超时时间。 默认值为-1。 如果事务在超过此限制时间后仍未完成,则事务将自动回滚。

只读指定事务是否为只读,默认值为假; 若要忽略不需要事务的方法(如数据加载),请将只读设置为真。

rollback-for用于指定可以触发事务回滚的异常类型。 如果需要指定多种异常类型,可以用逗号分隔。

无回滚- for抛出由无回滚- for指定的异常类型,但不回滚事务。

2、事务性APP应用

@Transactional表示可以添加到方法中,也可以在当前方法上配置事务并将其添加到类级别。

也可以添加到类级别。 在类级别释放@Transactional注释意味着该类的所有公共方法都构成相同的事务属性信息。

如果在类级别设置@Transactional,并在方法级别设置@Transactional,则APP应用程序将使用方法级别的事务属性信息来管理事务。 这意味着方法级事务属性信息将复盖类级配置信息。

3、备注

3.1 @Transactional注释应用于公共方法以进行事务管理。 因为aop进行监听是否是公共方法

//abstractfallbacktransactionattributesource类

保护性方法(方法方法,

classtargetclass (//don‘tallow no-publicmethodsasrequired。

Allowpublicmethodsonly (! modifier.is public (method.get modifiers () ) {return null; }

3.2传播属性

以下三个传播可以不启动事务: 的三种类型的传播可能被错误配置,导致事务无法回滚。

transaction definition.propagation _ supports :加入事务(如果当前存在事务); 如果当前没有事务,请使用事务以外的其他方法继续执行。

transaction definition.propagation _ not _ supported :在非事务中执行,如果当前事务存在,则挂起当前事务。

transaction definition.propagation _ never :在非事务中执行,如果当前存在事务,则抛出异常。

3.3回滚for属性

默认情况下,如果未检查的异常(从RuntimeException继承的异常)或Error抛出到事务中,Spring将回滚事务。 此外,Spring不会回滚事务。

可以使用rollbackFor创建抛出到食物的其他类型的异常,以支持事务回滚。 示例:

@ transactional (propagation=propagation.required,rollbackFor=MyException.class ) )

如果在目标方法中抛出的异常是rollbackFor中指定的异常的子类,则事务也会回滚。

spring事务管理,如何实现Transactional注解