小编Sus*_*sie的帖子

直接调用@Bean注解的方法。使用依赖注入代替

我正在关注 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)

自闭症谱系障碍

spring intellij-idea spring-batch

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

intellij-idea ×1

spring ×1

spring-batch ×1