Spring 使用 spring 启动 @Transactional 在不启用事务管理的情况下工作
Spring boot with spring @Transactional works without enabling transactional management
在我的 spring 引导应用程序中 spring @Transactional 批注无需明确指定 @EnableTransactionManagement 即可工作。
有没有官方文档说是自动开启的?
或者有其他事情发生....?
顺便说一句:我正在使用 Spring 数据 JPA
如果“< tx:annotation-driven/ >”标记在您的 Spring XML 配置中,@Transactional 注释可以正常工作。看看这个参考:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/transaction/annotation/EnableTransactionManagement.html
是的,只要您的应用程序中有 spring-tx
和一些交易资源,它就会启用。实际上,如果您使用 spring-boot-starter-jdbc
或 spring-boot-starter-data-jpa
,Spring Boot 将为您配置一个 DataSource
,启动 Hibernate(在后一种情况下)并配置事务管理。
并非所有“Enable
”注释都需要明确设置。当我们可以检查合理数量的事情以验证为您配置它是否有意义时,我们就会这样做。在这种情况下,如果您有一个 DataSource
,您可能想要进行交易。如果您有 JPA(但没有 JTA 基础结构),您可能需要 JpaTransactionManager
)。如果我们自动配置它,最简单的使用方法是通过 @Transactional
,所以我们也会在这种情况下启用它。
我猜你一直在要求得到某种 "official" 答案,所以这里有一个。
@SpringBootApplication 添加 @EnableAutoConfiguration 它检测 Spring 数据 JPA 在你的类路径上。根据它 Spring 注册 PlatformTransactionManager - JpaTransactionManager、数据源、实体管理器、存储库。
不确定是否有准确的文章,但有适当的 on stack. An official spring sample article
在我的 spring 引导应用程序中 spring @Transactional 批注无需明确指定 @EnableTransactionManagement 即可工作。
有没有官方文档说是自动开启的?
或者有其他事情发生....?
顺便说一句:我正在使用 Spring 数据 JPA
@Transactional 注释可以正常工作。看看这个参考:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/transaction/annotation/EnableTransactionManagement.html
是的,只要您的应用程序中有 spring-tx
和一些交易资源,它就会启用。实际上,如果您使用 spring-boot-starter-jdbc
或 spring-boot-starter-data-jpa
,Spring Boot 将为您配置一个 DataSource
,启动 Hibernate(在后一种情况下)并配置事务管理。
并非所有“Enable
”注释都需要明确设置。当我们可以检查合理数量的事情以验证为您配置它是否有意义时,我们就会这样做。在这种情况下,如果您有一个 DataSource
,您可能想要进行交易。如果您有 JPA(但没有 JTA 基础结构),您可能需要 JpaTransactionManager
)。如果我们自动配置它,最简单的使用方法是通过 @Transactional
,所以我们也会在这种情况下启用它。
我猜你一直在要求得到某种 "official" 答案,所以这里有一个。
@SpringBootApplication 添加 @EnableAutoConfiguration 它检测 Spring 数据 JPA 在你的类路径上。根据它 Spring 注册 PlatformTransactionManager - JpaTransactionManager、数据源、实体管理器、存储库。
不确定是否有准确的文章,但有适当的