上一節說了Spring的事務配置,其中,聲明式事務配置里有5種配置方式, @Transactional註解應該是最為常用的一種方式了。這一節就說說@Transactional註解。 @Transactional註解可以放到類名或者方法名上面, 寫在類名上面,如下: @Transactional( p ...
上一節說了Spring的事務配置,其中,聲明式事務配置里有5種配置方式,
@Transactional
註解應該是最為常用的一種方式了。這一節就說說@Transactional
註解。
@Transactional
註解可以放到類名或者方法名上面,
寫在類名上面,如下:
@Transactional( propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, timeout = -1, readOnly = false, rollbackFor = {Exception.class})
@Service
public class UserServiceImpl {
public void A() {
//......
}
}
寫在方法名上面,如下:
@Transactional( propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, timeout = -1, readOnly = false, rollbackFor = {Exception.class})
public void A() {
//......
}
如果寫在類上面,則這個類下麵的所有方法都會應用這個註解的屬性設置。
下麵是@Transactional
註解的各個屬性解釋:
屬性名 | 說明 |
---|---|
propagation | 事務的傳播行為,預設值為 REQUIRED。[詳情] |
isolation | 事務的隔離級別,預設值為 DEFAULT。[詳情] |
timeout | 事務的超時時間,預設值為-1。如果超過該時間限制但事務還沒有完成,則自動回滾事務。 |
readOnly | 指定事務是否為只讀事務,預設值為 false;如果方法內只有select的操作,沒有insert、update、delete的操作,可以設置 read-only 為 true。[詳情] |
rollbackFor | 指定能夠觸發事務回滾的異常類型。例如:@Transactional(rollbackFor={RuntimeException.class, Exception.class})。 |
rollbackForClassName | 指定能夠觸發事務回滾的異常類名。例如:@Transactional(rollbackForClassName={"RuntimeException","Exception"})。 |
noRollbackFor | 指定的異常類型,不回滾事務。預設值為{}。例如:@Transactional(noRollbackFor={RuntimeException.class, Exception.class})。 |
noRollbackForClassName | 指定的異常類名,不回滾事務。預設值為{}。例如:@Transactional(noRollbackForClassName={"RuntimeException","Exception"})。 |