- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
Spring 有没有纯注释的文档?我见过的90%的文档都是为xml实现编写的。
我试图覆盖默认的 JobLauncher 以能够传递 JobParameters,但是我添加到以下代码中的任何 JobLauncher 函数都被忽略,而是运行默认的 SimpleJobLauncher。
我想使用 4 个不同的作业参数启动同一作业的 4 个并发实例。参数应该告诉读者从哪个目录读取。
我可以使用 @Value 注释传递目录的值,但这似乎只允许我设置一个在运行之间不会更改的默认值。
我在创建作业时无法对其进行配置(“World”被完全忽略)
@EnableBatchProcessing
@Configuration
public class BatchConfiguration{
private static final Logger log = LoggerFactory.getLogger(BatchConfiguration.class);
@Resource
public JobLauncher jobLauncher;
@Resource
public JobBuilderFactory jobBuilderFactory;
@Resource
public StepBuilderFactory stepBuilderFactory;
@Bean
@StepScope
ItemReader<Record> reader(@Value("") String directory) {
return new ExcelReader(directory);
}
@Bean
public ItemProcessor processor() {
return new ItemProcessor();
}
@Bean
public JobCompletionNotificationListener listener(){
return new JobCompletionNotificationListener();
}
@Bean
public Writer writer() {
Writer writer = new Writer();
return writer;
}
//Job Definition
@Bean
public Job job(JobCompletionNotificationListener listener) {
return jobBuilderFactory.get("job")
.listener(listener)
.flow(step1("World"))
.end()
.build();
}
@Bean
public Step step1(String directory) {
return stepBuilderFactory.get("step1")
.<Record, Record> chunk(10)
.reader(reader(directory))
.processor(processor())
.writer(writer())
.build();
}
}
我正在使用
启动我的应用程序 SpringApplication.run(Application.class, args);
有更好的方式来启动应用程序吗?
最佳答案
注释文档没有消息,但我找到了传递参数的答案。由于我们没有使用 xml,因此我们可以使用 AnnotationConfigApplicationContext 来代替并指定顶级包。然后我们使用此上下文来获取默认作业启动器并在启 Action 业时传递参数。
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();
}
关于java - 如何覆盖默认的 JobLauncher? Spring批注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42101142/
Spring 有没有纯注释的文档?我见过的90%的文档都是为xml实现编写的。 我试图覆盖默认的 JobLauncher 以能够传递 JobParameters,但是我添加到以下代码中的任何 JobL
有一个@Aspect可以确保Spring Boot中的作业不可重入。它在 JobLauncherSynchronizer.java 中实现并记录here 。它位于 Spring Batch 管理工件中
应用程序已启动但出现此异常 Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionExcep
我是一名优秀的程序员,十分优秀!