![](/img/trans.png)
[英]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.