Bean
аннотация заключается в создании компонента типа Step
, вы можете ввести этот компонент в job
.
@Bean
@Autowired
public Job importUserJob(Step step) { // auto-wired the bean
return jobBuilderFactory.get("importUserJob")
.incrementer(new RunIdIncrementer())
.listener(listener())
.flow(step) // note this
.end()
.build();
}
Бин аннотаций не требуется, если вы прямого вызова метода step1 к работе
@Bean
public Job importUserJob() { // no args
return jobBuilderFactory.get("importUserJob")
.incrementer(new RunIdIncrementer())
.listener(listener())
.flow(step1()) // directly calling the method
.end()
.build();
}
В примере шаг и работу на том же классе, поэтому они непосредственно называют метод, но если они оба в разных классах, тогда вы должны сделать их как bean и впрыснуть в класс, который вам нужен.
step1
это имя шага создается с завода stepBuilderFactory
UPDATE
Выполнение приложения с и без Bean аннотацией, получить список бинов, если ваш метод помечается Bean вас» вы получите bean из контекста
ApplicationContext context = SpringApplication.run(SpringBoot.class, args);
String[] beans = context.getBeanDefinitionNames();
for (String bean : beans) {
System.out.println(bean);
}
Still @Bean не ясен. Не могли бы вы рассказать об этом подробнее? –
Он похож на определение компонента в XML '', если вы аннотируете метод с тегом bean, будет создан bean-компонент и что bean можно вводить в любом месте, см. код, который я опубликовал, я аннотировал метод задания с помощью '@ Autowired' и передавал« Step step »в качестве аргумента, bean-компонент будет автоматически подключаться –
Saravana