在我的春季启动应用程序中,Spring @Transactional注释无需明确指定@EnableTransactionManagement即可运行。
是否有任何官方文档说它是自动启用的?
或者还有其他事情发生了......?
btw:我正在使用Spring Data JPA
答案 0 :(得分:4)
是的,只要您的应用程序中有spring-tx
和某些事务资源,就会启用此功能。有效地,如果您使用spring-boot-starter-jdbc
或spring-boot-starter-data-jpa
,Spring Boot将为您配置DataSource
,启动Hibernate(在后一种情况下)并配置事务管理。
并非所有“Enable
”注释都需要明确设置。当有合理数量的东西我们可以检查以验证时,为您配置它是有意义的,我们会这样做。在这种情况下,如果您有DataSource
,则必须要进行交易。如果您有JPA(并且没有JTA基础结构),您可能需要JpaTransactionManager
)。如果我们自动配置它,最简单的方法是通过@Transactional
,所以我们也会在那种情况下启用它。
我猜你一直要求获得某种“官方”答案,所以这里就是一个。
答案 1 :(得分:0)
@Transactional注释可以正常工作标签位于Spring XML配置中。请看这个参考:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/transaction/annotation/EnableTransactionManagement.html
答案 2 :(得分:0)