java - 模块化 = true 和 GenericApplicationContextFactory 的 Spring Batch 很麻烦
问题描述
我正在使用 Spring Batch@EnableBatchProcessing(modular = true)
问题在于,在这种模式下,您必须明确声明要初始化哪些 bean(即 Spring 需要扫描哪些类)
这是一个例子:
@Configuration
@EnableBatchProcessing(modular = true)
public class ModularJobsConfig {
@Autowired
private AutomaticJobRegistrar registrar;
@PostConstruct
public void initialize() {
registrar.addApplicationContextFactory(new GenericApplicationContextFactory(
SomeJobConfig.class,
SomeJobTasklet.class,
SomeClassToDefineTaskExecutor.class
SomeClassToRunTheJob.class));
}
}
可以想象,等我有好几份工作的时候,这个配置类会很臃肿。我怎样才能自动化呢?
值得一提的是,每个工作都有自己的包(例如com.example.jobs.<job_name>
)+它们在不同的 maven-modules 中定义,但我认为这无关紧要。
进一步澄清
我有一个core
包含上述配置的模块。每个作业都在一个单独的 maven 模块中定义,并在core
.
主要是为了防止命名冲突,我正在使用@EnableBatchProcessing(modular = true)
并且正在注册作业,AutomaticJobRegistrar
如您在上面的示例代码中所见。
理想情况下,我希望 Spring 扫描 maven 依赖项并为我完成(即定义GenericApplicationContextFactory
)
目前,手动添加每个类很麻烦(在上面的示例中:SomeJobConfig.class
等SomeJobTasklet.class
)
作为一个反例,如果我不使用,modular=true
我可以让 Spring Batch 自己加载所有 bean,但是我必须确保方法名称在所有模块中都是唯一的。
解决方案
推荐阅读
- javascript - 我在 componentDidMount 中加载数据,但每次渲染时都会加载数据,我该如何避免这种行为?
- visual-studio-code - 如何查找 VS Code 键盘快捷键冲突?
- selenium - ngxin 启动 chrome webdriver
- docker - pgAdmin Docker 错误:“gunicorn_config.py”不存在
- background-color - 更改 DITA 中的 custom-attrs.xsl 文件并没有更改我的表格列标题的背景颜色。那我怎么改呢?
- asp.net - Automapper 映射不一致
- javascript - 如何通过特定键在数组中按字母顺序对对象进行分组?
- javascript - React - useEffect 覆盖具有多个数据的道具
- angular - Angular 8 http补丁成功完成但第一次没有提供正确的响应
- c# - 从另一个程序集加载转换器:“在 'System.Windows.StaticResourceExtension' 上提供值引发异常。”