首页 > 编程语言 > 详细

spring的事务解决方案之@Transactional注解

时间:2019-02-12 15:10:32      阅读:364      评论:0      收藏:0      [点我收藏+]

首先此注解位于 org.springframework.transaction.annotation 这个包路径下面,
事务有两种类别,一种是编程式事务,另一种是声明式事务,显然此注解是声明式事务,这也是spring Aop倡导的非侵入式代码风格,通过方法的前后拦截,实现对事务的控制

几个重要的英文含义:
transaction /tr?n‘z?k??n/ n. 交易;事务;办理;会报,学报
propagation  /,pr?p?‘ɡe???n/ n. 传播;繁殖;增
以下是@transactionl注解的源码

package org.springframework.transaction.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.core.annotation.AliasFor;
import org.springframework.transaction.TransactionDefinition;

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Transactional {

@AliasFor("transactionManager")
String value() default "";

@AliasFor("value")
String transactionManager() default "";

事务传播类型。
Propagation propagation() default Propagation.REQUIRED;

事务隔离级别。
Isolation isolation() default Isolation.DEFAULT;

此事务的超时(以秒为单位)。
int timeout() default TransactionDefinition.TIMEOUT_DEFAULT;

true如果事务是有效只读的,则可以设置为布尔标志,允许在运行时进行相应的优化。
boolean readOnly() default false;

指示哪些异常类型必须导致事务回滚。
Class<? extends Throwable>[] rollbackFor() default {};

String[] rollbackForClassName() default {};

Class<? extends Throwable>[] noRollbackFor() default {};

String[] noRollbackForClassName() default {};
}

下面对以上注解各个属性的具体含义,我去查看了spring的官方网站,根据官方文档的解释做如下的理解

@Transactional注解可以作用于类或方法上的事务属性,在类级别上,该注解默认应用于声明类及其子类的所有方法。注意,它不应用于类层次结构上的父类

spring的事务解决方案之@Transactional注解

原文:https://www.cnblogs.com/fenglangjuxu/p/10365148.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!