【问题标题】:Creating HibernateTransactionManager bean in a Spring Batch Application在 Spring Batch 应用程序中创建 HibernateTransactionManager bean
【发布时间】:2021-09-03 22:24:01
【问题描述】:

我在 Spring Batch 应用程序中为 HibernateTransactionManager 创建 bean 时遇到问题。

应用程序无法为 HibernateTransactionManager 的 transactionManager 创建 bean,因为它已由 SimpleBatchConfiguration 类在启用 @EnableBatchProcessing 注释时创建。

经过进一步分析,我发现SimpleBatchConfiguration 类创建了一个PlatformTransactionManager 类型的transactionManager bean。这个 PlatformTransactionManager 类扩展了 TransactionManager。

同时尝试为 HibernateTransactionManager 创建 transactionManager bean(这也扩展了 TransactionManager 类),应用程序无法开始说

没有为 org.springframework.transaction.TransactionManager 找到符合条件的 bean。期待一个但发现两个:transactionManager,transactionManagerBean。

下面是 transactionManagerBean 的 bean 定义。

<bean id="transactionManagerBean" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    <property name="sessionFactory" ref="hibernateSessionFactory"/>
</bean>

<tx:annotation-driven transaction-manager="transactionManagerBean"/>

我正在使用: 春季批次:4.2.7-RELEASE 春季启动:2.3.11-RELEASE 休眠:5.4.31-决赛 Spring-cloud-starter:2.2.5-RELEASE

谁能帮忙。

【问题讨论】:

    标签: java spring-boot hibernate spring-batch spring-cloud


    【解决方案1】:

    这是一个已知问题,已在此处报告:https://github.com/spring-projects/spring-batch/issues/816。这将在下一个主要版本中修复(因为它是重大更改)。

    如果您使用 Spring Boot 或为事务管理器指定 transactionManager 以外的名称,目前的解决方法是启用 b​​ean 覆盖。否则,您可以省略使用 @EnableBatchProcessing 并手动配置基础架构 bean。

    【讨论】:

      【解决方案2】:

      使用 bean 元素的 primary 属性。它表示当多个候选者有资格自动装配单值依赖项时,应优先考虑一个 bean。

      &lt;bean primary="true"/&gt;

      【讨论】:

      • 嗨@Rahul 正如你所建议的,我在 hibernateTransaction bean 定义中添加了 primary="true"。之后我收到以下错误。在类路径资源 [org/ springframework/transaction/annotation/ProxyTransactionManagementConfiguration.class],无法注册。已经定义了具有该名称的 bean,并且禁用了覆盖。你能帮忙吗...
      • 同名冲突。试着给你的 bean 起个别的名字。
      猜你喜欢
      • 2015-06-05
      • 2015-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 1970-01-01
      • 1970-01-01
      • 2021-03-14
      相关资源
      最近更新 更多