【问题标题】:Disable transaction manager in Spring Boot application在 Spring Boot 应用程序中禁用事务管理器
【发布时间】:2014-11-24 10:52:41
【问题描述】:

如何在 Spring Boot 应用程序中禁用事务管理器?

我有这个例外:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.transaction.PlatformTransactionManager] is defined

由于@Transactional注解(我在其他应用中使用这些注解,所以无法删除,但有办法忽略它?通过禁用事务管理器?)。

【问题讨论】:

  • 你不能从类路径中删除 spring-tx jar(如果你不使用它)?
  • 否:ClassNotFoundException org.springframework.dao.DataAccessException
  • 为什么需要DataAccessException?这里没有太多细节可以继续。你怎么可能在没有事务管理器的情况下使用带有@Transactional 注释的组件?
  • Spring boot 需要 DataAccessExceptionEmbeddedDatabaseConnectionSee 例如。这是因为我添加了@EnableAutoConfiguration(见stackoverflow.com/questions/26634426/…)。
  • 我在多个项目共享的接口上使用@Transactional。一个项目是一个服务器,所以它需要事务。另一个是客户端,通过rmi调用server,所以使用相同的接口,但不需要事务。

标签: java spring spring-boot


【解决方案1】:

我猜你有三个选择:

  1. 删除注释

  2. 提供事务管理器

  3. 排除添加@EnableTransactionManagement的配置类

在 Spring Boot 应用程序中,如果您使用的是 JDBC 或 JPA,您只会得到 @EnableTransactionManagement,所以实际上应该已经有了事务管理器。我能看到的唯一原因是你在类路径上有 spring-jdbc 但没有数据库。如果您的类路径上已经有 spring-tx 和 spring-jdbc(似乎是这种情况),您可以添加一个内存数据库(例如 h2)来获取事务管理器。这对我来说似乎是最好的解决方案。但您也可以在您的@EnableAutoConfiguration 中排除DataSourceTransactionManagerAutoConfiguration

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-27
    • 2019-06-12
    • 1970-01-01
    • 2023-03-25
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    相关资源
    最近更新 更多