spring的事務解決方案之@Transactional註解


首先此註解位於 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;

若是事務是有效只讀的,則能夠設置爲布爾標誌,容許在運行時進行相應的優化。 boolean readOnly() default false; 指示哪些異常類型必須致使事務回滾。 Class<? extends Throwable>[] rollbackFor() default {}; String[] rollbackForClassName() default {}; Class<? extends Throwable>[] noRollbackFor() default {}; String[] noRollbackForClassName() default {};}下面對以上註解各個屬性的具體含義,我去查看了spring的官方網站,根據官方文檔的解釋作以下的理解@Transactional註解能夠做用於類或方法上的事務屬性,在類級別上,該註解默認應用於聲明類及其子類的全部方法。注意,它不該用於類層次結構上的父類
true
相關文章
相關標籤/搜索