当前位置: 首页 > 知识库问答 >
问题:

Spring Batch基础架构使用JavaConfig Beans而不是@EnableBatchProcess定义

鲍鸿波
2023-03-14

我使用Spring Batch 4.3.2。我需要为JobLauncher定义一个TaskExecutor。由于我不想启用bean覆盖,使用DefaultBatchConfigurer的解决方案不适用。我最终得到了下面的bean,自己定义了所有bean。我的问题是:

  1. 除了我的解决方案,你还有别的解决方案吗
  2. 豆子的定义正确吗

谢谢你的帮助!干杯

 @Bean
public JobBuilderFactory jobBuilderFactory(JobRepository jobRepository) {
    return new JobBuilderFactory(jobRepository);
}

@Bean
public StepBuilderFactory stepBuilderFactory(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
    return new StepBuilderFactory(jobRepository, transactionManager);
}

@Bean
public JobRegistry jobRegistry() {
    return new MapJobRegistry();
}

@Bean
public JobRepository createJobRepository(DataSource dataSource, PlatformTransactionManager transactionManager) throws Exception {
    JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
    factory.setDataSource(dataSource);
    factory.setTransactionManager(transactionManager);
    factory.afterPropertiesSet();
    return factory.getObject();
}

@Bean
public JobExplorer createJobExplorer(DataSource dataSource) throws Exception {
    JobExplorerFactoryBean jobExplorerFactoryBean = new JobExplorerFactoryBean();
    jobExplorerFactoryBean.setDataSource(dataSource);
    jobExplorerFactoryBean.afterPropertiesSet();
    return jobExplorerFactoryBean.getObject();
}

@Bean
public JobLauncher jobLauncher(ThreadPoolTaskExecutor taskExecutor, JobRepository jobRepository) throws Exception {
    SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
    jobLauncher.setJobRepository(jobRepository);
    jobLauncher.setTaskExecutor(taskExecutor);
    jobLauncher.afterPropertiesSet();
    return jobLauncher;
}

@Bean
public ThreadPoolTaskExecutor msBatchTaskExecutor() {
    ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
    taskExecutor.setCorePoolSize(5);
    taskExecutor.setMaxPoolSize(50);
    taskExecutor.setQueueCapacity(50);
    return taskExecutor;
}

共有1个答案

羊舌阎宝
2023-03-14

如果您不想使用@EnableBatchProcessing,那么Java配置的方法就是手动定义基础结构bean。

请注意,这也是XML配置的工作方式,您需要手动定义架构体系bean,因为XML中没有@EnableBatchProcess的等价物(它有一个开放的功能请求)。

 类似资料:
  • 本文向大家介绍kafka基础架构相关面试题,主要包含被问及kafka基础架构时的应答技巧和注意事项,需要的朋友参考一下 1)Producer :消息生产者,就是向kafka broker发消息的客户端; 2)Consumer :消息消费者,向kafka broker取消息的客户端; 3)Consumer Group (CG):消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分

  • Java虚拟机简介 “Java虚拟机”可能指如下三个不同的东西 抽象规范 一个具体的实现 一个运行中的虚拟机实例 每个Java程序都运行在某个具体的Java虚拟机实现的实例上。一个Java虚拟机的实例负责运行一个Java程序。当启动一个Java程序的时候,一个虚拟机的实例也就诞生了。当该程序关闭退出时,这个虚拟机实例也就随之消亡。 线程介绍 在Java虚拟机内部有两种线程: 守护线程:通常是由虚拟

  • 这是AWS EC2的基本结构,其中EC2代表Elastic Compute Cloud。 EC2允许用户根据需要使用不同配置的虚拟机。 它允许各种配置选项,单个服务器的映射,各种定价选项等。我们将在AWS产品部分详细讨论这些。 以下是架构的图示。 Note - 在上图中, S3代表简单存储服务。 它允许用户使用API​​调用存储和检索各种类型的数据。 它不包含任何计算元素。 我们将在AWS产品部分

  • 问的最多的问题:”一个基于 MINA 的应用看起来像什么”?本小节我们将来了解一下基于 MINA 的应用架构。我们收集了一些基于 MINA 的演示信息。 架构鸟瞰图 这里,我们可以看到,MINA 是你的应用程序 (可能是一个客户端应用或者一个服务器端应用) 和基础网络层之间的粘合剂,可以基于 TCP、UDP、in-VM 通信甚至一个客户端的 RS-232C 串行协议。 你要做的仅仅是在 MINA

  • 面试时间 8.25 持续时间 45 分钟 面试问题: 自我介绍 本专业的项目亮点介绍 redis的介绍 redis为什么快  redis单线程为什么快 redis单线程的话某个线程卡住了怎么办 mysql数据结构 - B+树 mvcc 存储引擎 mysql崩溃怎么保证数据安全(两个日志) kafka在项目中的应用场景 题目 : (easy) 层序遍历 自己构造 总结 : 面试官挺好的,会帮助回答过

  • 总的来说,Android的系统体系结构分为四层,自顶向下分别是: 应用程序(Applications) 应用程序框架(Application Frameworks) 系统运行库与Android运行环境(Libraris & Android Runtime) Linux内核(Linux Kernel) 安卓系统结构示意图 下面对每层进行详细说明 1. 应用程序(Applications) Andro