【问题标题】:Spring Batch Composite Item Writer Transaction ManagementSpring Batch Composite Item Writer 事务管理
【发布时间】:2021-02-07 09:24:07
【问题描述】:

关于How does Spring Batch CompositeItemWriter manage transaction for delegate writers? 的帖子,对于复合项目写入器事务管理,我们不应该将数据源包装在如下所示的事务管理器中吗?如果没有以下 bean 定义,则事务管理无法与 Oracle 和 Hikari CP 一起使用。不确定帖子中提供的示例如何工作..请澄清

@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
            return new DataSourceTransactionManager(dataSource);
}

【问题讨论】:

    标签: spring-boot spring-batch transactionmanager


    【解决方案1】:

    不需要添加那个bean,示例提供了一个DataSource并使用了@EnableBatchProcessing,所以Spring Batch会默认配置一个DataSourceTransactionManager。这在@EnableBatchProcessing的文档中有解释。

    【讨论】:

    • 我通过扩展 DefaultBatchConfigurer 将 Spring Batch 数据源设置为 null,因为我不需要该功能.. ``` @Override public void setDataSource(final DataSource dataSource) { // 使用 NULL 进行初始化-内存作业初始化 super.setDataSource(null); } ``` 这可能是没有数据源事务管理器定义的情况下它不适用于我的应用程序数据源的原因吗?它仅在我显式添加数据源事务管理器 bean 时才有效
    • 您认为这是导致问题的原因吗?
    • 不行,这种情况下需要自己定义事务管理器并设置在步骤上。
    猜你喜欢
    • 1970-01-01
    • 2017-08-20
    • 2014-12-01
    • 2013-07-30
    • 2021-02-20
    • 2012-06-16
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多