Spring @Transactional
的屬性值預設如下。
propagation
:Propagation.REQUIRED
,使用既有交易,若不存在開一個新的。isolation
:Isolation.DEFAULT
,使用資料庫的隔離設定。readOnly
:false
(read-write),此交易是否只讀取。timeout
:-1
,以底層交易系統的逾時設定為預設值。rollbackFor
:預設交易中拋出RuntimeException
才會回滾,若拋出可捕捉的Exception
不會回滾。
參考原始碼如下。
@Transactional
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.TYPE, ElementType.METHOD})
@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 {};
}
沒有留言:
張貼留言