Java 在Spring启动应用程序中禁用事务管理器
如何在Spring启动应用程序中禁用事务管理器 我有一个例外:Java 在Spring启动应用程序中禁用事务管理器,java,spring,spring-boot,Java,Spring,Spring Boot,如何在Spring启动应用程序中禁用事务管理器 我有一个例外: Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.transaction.PlatformTransactionManager] is defined 因为@Transactional annotations(我在其他应用程序中使用这些
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.transaction.PlatformTransactionManager] is defined
因为@Transactional annotations(我在其他应用程序中使用这些注释,因此无法删除,但有一种方法可以忽略它?通过禁用事务管理器?)。我想您有三种选择:
@EnableTransactionManagement
在Spring Boot应用程序中,如果您使用的是JDBC或JPA,则只能获得
@EnableTransactionManagement
,因此实际上应该已经有了事务管理器。我所能看到的唯一一个不存在的原因是类路径上有SpringJDBC,但没有数据库。如果您的类路径上已经有了SpringTX和SpringJDBC(似乎是这样),那么您只需添加内存中的数据库(例如h2)即可获得事务管理器。对我来说,这似乎是最好的解决办法。但是您也可以在@EnableAutoConfiguration
中排除DataSourceTransactionManagerAutoConfiguration
难道您不能从类路径中删除spring tx jar(如果您不使用它)?否:ClassNotFoundException org.springframework.dao.DataAccessException为什么需要DataAccessException
?这里没有太多细节。您如何能够在没有事务管理器的情况下使用带有@Transactional
注释的组件?例如,Spring boot需要EmbeddedDatabaseConnectionSee中的DataAccessException
。这是因为我添加了@EnableAutoConfiguration
(请参阅)。我在多个项目共享的接口上使用@Transactional
。项目是服务器,因此它需要事务。另一个是通过rmi调用服务器的客户机,所以它使用相同的接口,但不需要事务。