Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring启动应用程序中禁用事务管理器_Java_Spring_Spring Boot - Fatal编程技术网

Java 在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(我在其他应用程序中使用这些

如何在Spring启动应用程序中禁用事务管理器

我有一个例外:

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调用服务器的客户机,所以它使用相同的接口,但不需要事务。