Sus*_*sie 7 spring intellij-idea spring-batch
我正在关注 Spring Batch 的教程,当我编写以下代码时 - IntelliJ 抱怨作业函数中的 tasklet(null) 调用被直接调用:
Method annotated with @Bean is called directly. Use dependency injection instead.
Run Code Online (Sandbox Code Playgroud)
如果我从作业中删除 @Bean 注释,错误就会消失 - 但我想知道发生了什么。我怎样才能在那里注入豆子?简单地写tasklet(Tasklet tasklet(null))会产生同样的错误。
@Bean
@StepScope
public Tasklet tasklet(@Value("#{jobParameters['name']}") String name) {
return ((contribution, chunkContext) -> {
System.out.println(String.format("This is %s", name));
return RepeatStatus.FINISHED;
});
}
@Bean
public Job job() {
return jobBuilderFactory.get("job")
.start(stepBuilderFactory.get("step1")
.tasklet(tasklet(null)) // tasklet(null) = problem
.build())
.build();
}
Run Code Online (Sandbox Code Playgroud)
自闭症谱系障碍
@Bean
@StepScope
public Tasklet tasklet(@Value("#{jobParameters['name']}") String name) {
return ((contribution, chunkContext) -> {
System.out.println(String.format("This is %s", name));
return RepeatStatus.FINISHED;
});
}
@Bean
public Job job(Tasklet tasklet) {
return jobBuilderFactory.get("job")
.start(stepBuilderFactory.get("step1")
.tasklet(tasklet)
.build())
.build();
}
Run Code Online (Sandbox Code Playgroud)
Spring Bean 创建和 AOP 非常挑剔。使用时需要非常小心。
在这种情况下,您可以使用bean依赖来解决TaskLet名称为空的问题。
| 归档时间: |
|
| 查看次数: |
16509 次 |
| 最近记录: |