[英]Spring Transaction Management: using @Transactional vs using AOP (<aop:advisor)
[英]Spring Transaction Management @Transactional behavior
我想知道 Spring @Transactional 將如何適用於以下編碼場景。 我在這個例子中使用 Spring 4 + Hiberante 5 和 Oracle 19C 數據庫。
示例 1:
@Service
public class UserService {
@Transactional(readOnly = true)
public void invoice() {
createPdf();
// send invoice as email, etc.
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void createPdf() {
// ...
}
}
示例 2:
@Service
public class UserService {
@Autowired
private InvoiceService invoiceService;
@Transactional(readOnly = true)
public void invoice() {
invoiceService.createPdf();
// send invoice as email, etc.
}
}
@Service
public class InvoiceService {
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void createPdf() {
// ...
}
}
謝謝
示例 1 :當您從服務inside
調用 createPDF 方法時,@Transactional(REQUIRES_NEW) 注釋將被有效地ignored
。 不會有新的交易開啟。
示例 2 :當您調用另一個服務時,該服務包裝在事務代理中,您將獲得一個new transaction
,因為注釋受到尊重。
您可能還想閱讀這篇文章: Spring 事務管理:@Transactional In-Depth
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.