Java 如何覆盖默认的JobLauncher?Spring批处理注释
Spring是否有任何纯基于注释的文档?我看到的90%的文档都是为xml实现编写的 我试图覆盖默认的JobLauncher以能够传递JobParameters,但是我添加到下面代码中的任何JobLauncher函数都被忽略,而默认的SimpleJobLauncher将运行 我想用4个不同的作业参数启动同一作业的4个并发实例。参数应该告诉读取器从哪个目录读取 我可以使用@Value注释为目录传递值,但这似乎只允许我设置一个默认值,在运行之间不会更改 创建作业时无法配置作业(“世界”完全被忽略)Java 如何覆盖默认的JobLauncher?Spring批处理注释,java,spring,spring-batch,Java,Spring,Spring Batch,Spring是否有任何纯基于注释的文档?我看到的90%的文档都是为xml实现编写的 我试图覆盖默认的JobLauncher以能够传递JobParameters,但是我添加到下面代码中的任何JobLauncher函数都被忽略,而默认的SimpleJobLauncher将运行 我想用4个不同的作业参数启动同一作业的4个并发实例。参数应该告诉读取器从哪个目录读取 我可以使用@Value注释为目录传递值,但这似乎只允许我设置一个默认值,在运行之间不会更改 创建作业时无法配置作业(“世界”完全被忽略) 是
是否有更好的方法启动应用程序???注释文档中没有消息,但我找到了传递参数的答案。因为我们不使用xml,所以可以使用AnnotationConfigApplicationContext,并指定顶级包。然后,我们使用此上下文获取默认作业启动器,并在启动作业时传递参数
ApplicationContext context = new AnnotationConfigApplicationContext("package.names.*");
JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
Job job = (Job) context.getBean("testJob");
Map<String, JobParameter> params = new HashMap<String, JobParameter>();
JobExecution execution = null;
JobParameters jp = null;
try {
params.put("directory", new JobParameter("testfolder"));
jp = new JobParameters(params);
execution = jobLauncher.run(job, jp);
} catch (Exception e) {
e.printStackTrace();
}
ApplicationContext context=new AnnotationConfigApplicationContext(“package.names.*);
JobLauncher JobLauncher=(JobLauncher)context.getBean(“JobLauncher”);
Job Job=(Job)context.getBean(“testJob”);
Map params=新的HashMap();
JobExecution=null;
作业参数jp=null;
试一试{
参数put(“目录”,新作业参数(“testfolder”);
jp=新作业参数(参数);
execution=jobLauncher.run(作业,jp);
}捕获(例外e){
e、 printStackTrace();
}
关于注释文档没有任何消息,但我找到了传递参数的答案。因为我们不使用xml,所以可以使用AnnotationConfigApplicationContext,并指定顶级包。然后,我们使用此上下文获取默认作业启动器,并在启动作业时传递参数
ApplicationContext context = new AnnotationConfigApplicationContext("package.names.*");
JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
Job job = (Job) context.getBean("testJob");
Map<String, JobParameter> params = new HashMap<String, JobParameter>();
JobExecution execution = null;
JobParameters jp = null;
try {
params.put("directory", new JobParameter("testfolder"));
jp = new JobParameters(params);
execution = jobLauncher.run(job, jp);
} catch (Exception e) {
e.printStackTrace();
}
ApplicationContext context=new AnnotationConfigApplicationContext(“package.names.*);
JobLauncher JobLauncher=(JobLauncher)context.getBean(“JobLauncher”);
Job Job=(Job)context.getBean(“testJob”);
Map params=新的HashMap();
JobExecution=null;
作业参数jp=null;
试一试{
参数put(“目录”,新作业参数(“testfolder”);
jp=新作业参数(参数);
execution=jobLauncher.run(作业,jp);
}捕获(例外e){
e、 printStackTrace();
}
如果希望保存sb元数据,可以更新transactionManager bean(推荐)
如果希望持久化(推荐)sb元数据,可以更新transactionManager bean
ApplicationContext context = new AnnotationConfigApplicationContext("package.names.*");
JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
Job job = (Job) context.getBean("testJob");
Map<String, JobParameter> params = new HashMap<String, JobParameter>();
JobExecution execution = null;
JobParameters jp = null;
try {
params.put("directory", new JobParameter("testfolder"));
jp = new JobParameters(params);
execution = jobLauncher.run(job, jp);
} catch (Exception e) {
e.printStackTrace();
}
@Bean
public ResourcelessTransactionManager transactionManager() {
return new ResourcelessTransactionManager();
}
@Bean
public MapJobRepositoryFactoryBean mapJobRepositoryFactory(ResourcelessTransactionManager txManager)
throws Exception {
MapJobRepositoryFactoryBean factory = new MapJobRepositoryFactoryBean(txManager);
factory.afterPropertiesSet();
return factory;
}
@Bean
public JobRepository jobRepository(MapJobRepositoryFactoryBean factory) throws Exception {
return factory.getObject();
}
@Bean
public JobExplorer jobExplorer(MapJobRepositoryFactoryBean factory) {
return new SimpleJobExplorer(factory.getJobInstanceDao(), factory.getJobExecutionDao(),
factory.getStepExecutionDao(), factory.getExecutionContextDao());
}
@Bean
public SimpleJobLauncher jobLauncher(JobRepository jobRepository) {
SimpleJobLauncher launcher = new SimpleJobLauncher();
launcher.setJobRepository(jobRepository);
return launcher;
}