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();
}
}
我正在尝试在由@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();
}
}