«Проблема» - это ваш собственный код в вашем методе main
(который вы случайно забыли включить в свой вопрос!).
@SpringBootApplication
public class SpringBootBatch06Application {
public static void main(String[] args) throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException, JobParametersInvalidException, InterruptedException {
SpringApplication.run(SpringBootBatch06Application.class, args);
ApplicationContext context = new AnnotationConfigApplicationContext(BatchConfiguration.class, BatchJob.class);
// Other code removed
}
}
Вы создаете новый AnnotationConfigApplicationContext
для этих 2 классов. Который автоматически создаст эти 2 класса компонентов (независимо от аннотации @Component
или @Configuration
). Таким образом, вы в основном работаете с Spring Boot и его автоматической настройкой (возможно, потому что он не работает).
Для @Components
также разрешено иметь @Bean
методы, они будут работать в так называемом "lite @Bean Mode" (см. этот раздел Справочного руководства Spring).
Так как они теперь являются в первую очередь компонентами (или bean-компонентами) и имеют @Bean
методы, они будут производить новые bean-компоненты (хотя не так, как вы думаете, читайте вышеупомянутую документацию).