Spring-引导无法为@Configuration class创建的bean列表@Schedule任务

Spring-Boot Failing to @Schedule tasks for List of beans created by @Configuration class

我正在尝试在由@Configuration 注释的class 中创建相同类型的bean 列表。我需要的是执行那些 bean 中声明的 @Scheduled 函数。

 @SpringBootApplication
 @EnableScheduling
 public class DemoApplication
 {

     public static void main(String[] args)
     {
         SpringApplication.run(DemoApplication.class, args);
     }
 }


 @Configuration
 public class Config
 {
     @Bean
     public List<Monitoring> mon()
     {
         List<Monitoring> list = new ArrayList<>();
         for (int x = 0; x < 5; ++x)
         {
             list.add(new First());
         }
         return list;
     }
 }




 public class First implements Monitoring
 {
     private static final Logger logger = LoggerFactory.getLogger(First.class);


     @Override
     public void doSth()
     {
         logger.info("first monitoring bean");
     }


     @Scheduled(fixedRate = 50)
     private void init()
     {
         logger.info("scheduled task");
     }
 }

我对这些代码片段的期望是让我的 5 Beans of Monitoring 每 50 毫秒打印一次 "scheduled task",但我从未看到此输出。

您只是将列表创建为具有非托管 Monitoring 实例的 bean。那不行。

您需要正确创建 Monitoring bean(以便 Spring 发挥其魔力):

 @Configuration
 public class Config {

     @Bean
     public Monitoring first() {
         return new First();
     }

     @Bean
     public Monitoring second() {
         return new First();
     }

 }