弹簧靴+弹簧批次,不带数据源

2022-09-05 00:22:43

我正在尝试在spring Boot项目中配置spring批处理,我想在没有数据源的情况下使用它。我发现这是要走的路,但我无法让它发挥作用。问题是我已经定义了另外3个数据源,但我不想在springBatch中使用其中任何一个。ResourcelessTransactionManager

我已经检查了默认实现,如果它无法找到dataSource,它将完全按照我想要的方式进行操作。问题是我有3个,不想使用任何一个。DefaultBatchConfigurer

请不要建议在内存数据库中使用hsql或其他,因为我不希望这样。


答案 1

我通过扩展DefaultBatchConfigurer类来解决这个问题,以便它忽略任何数据源,因此它将配置基于映射的JobRepository。

例:

@Configuration
@EnableBatchProcessing
public class BatchConfig extends DefaultBatchConfigurer {   

    @Override
    public void setDataSource(DataSource dataSource) {
        //This BatchConfigurer ignores any DataSource
    }
}

答案 2

在我的情况下,我将数据保存到Cassandra。如果您使用的是 spring-boot-starter-batch,则需要提供尚未实现的数据源,但您可以像以下步骤一样欺骗配置:

第 1 步:

@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class SampleSpringBatchApplication{

    public static void main(String[] args) {
        System.setProperty("spring.devtools.restart.enabled", "true");
        SpringApplication.run(SampleSpringBatchApplication.class, args);
    }

}

第 2 步:

    @Configuration
    @EnableBatchProcessing
    public class SampleBatchJob extends DefaultBatchConfigurer {

        //..

        @Override
        public void setDataSource(DataSource dataSource) {
        }

        //..
    }

推荐