是否可以在独立的JVM中加载Spring上下文并将所有Spring批处理提交到已加载的Spring上下文中?
我试图避免为每个春季作业提交都加载春季上下文,因为我有资源需要花费很长时间来加载,最终会减慢春季上下文的加载。
我在类的主要方法中有以下代码。我通过CLI通过传递要调用的作业名来调用该类
public class SpringBatchJobRunner {
public static void main(String[] args) {
try {
parseArguments(args);
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:com/demo/batch/context/spring-batch-context.xml");
JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
Job job = (Job) context.getBean(jobName);
JobParametersBuilder builder = new JobParametersBuilder();
builder.addDate("date", new Date());
JobExecution execution = jobLauncher.run(job, builder.toJobParameters());
}
catch (Exception e) {
throw new RuntimeException(e);
}
}
static void parseArguments(String[] args) {
if (args.length > 0) {
jobName = args[0];
}
else {
throw new IllegalArgumentException("Please specify job name.");
}
if (args.length > 1) {
for (int i = 1; i < args.length; i++) {
String[] keyValue = args[i].split("=");
jobParameters.setProperty(keyValue[0], keyValue[1]);
}
}
}
}
答案 0 :(得分:0)
是的,Spring应用程序上下文可以包含多个作业定义。加载应用程序上下文后,您可以获取作业bean并根据需要启动它们。