为什么Spring@Scheduled不能与@Bean一起工作
我正在使用Spring引导和调度 在Spring中,为什么该方法可以正常工作(该方法每5秒调用一次)- 但事实并非如此(该方法不会每5秒调用一次)-为什么Spring@Scheduled不能与@Bean一起工作,spring,spring-boot,scheduled-tasks,Spring,Spring Boot,Scheduled Tasks,我正在使用Spring引导和调度 在Spring中,为什么该方法可以正常工作(该方法每5秒调用一次)- 但事实并非如此(该方法不会每5秒调用一次)- @Bean注释用于基于Java的配置,以注释构造Bean的方法。它只是一个错误的注释,不应该出现在那里。您在该方法上添加的两个注释放在一起没有多大意义 @Bean用于为应用程序中的自动连接部门创建一个单例 @Scheduled用于安排要重新运行的任务。 这没有意义的原因是,一般来说,bean是在应用程序启动时创建的,并自动连接到它们的依赖项中(完
@Bean
注释用于基于Java的配置,以注释构造Bean的方法。它只是一个错误的注释,不应该出现在那里。您在该方法上添加的两个注释放在一起没有多大意义
@Bean用于为应用程序中的自动连接部门创建一个单例
@Scheduled用于安排要重新运行的任务。
这没有意义的原因是,一般来说,bean是在应用程序启动时创建的,并自动连接到它们的依赖项中(完成一次)。相比之下,Schedule意味着您希望这种情况以常规的节奏发生。注释用于定义Bean实例,并且必须返回结果。
@Scheduled
注释属于bean方法,而不是bean本身,并且该方法必须返回void。另外,不要忘记通过将@EnableScheduling
放在一个@Configuration
类上来启用调度。例如:
MyConfig.java
@Configuration
@EnableScheduling
public class MyConfig
{
}
@Component
public class MyScheduledJob
{
@Scheduled(fixedRate = 5000)
public void doSomething() // Note: Should only return void
{
System.out.println(Instant.now() + ": MyScheduledJob.doSomething() invoked.");
}
}
MyScheduledJob.java
@Configuration
@EnableScheduling
public class MyConfig
{
}
@Component
public class MyScheduledJob
{
@Scheduled(fixedRate = 5000)
public void doSomething() // Note: Should only return void
{
System.out.println(Instant.now() + ": MyScheduledJob.doSomething() invoked.");
}
}
输出:
2017-01-28T03:08:04.760Z: MyScheduledJob.doSomething() invoked.
2017-01-28T03:08:09.756Z: MyScheduledJob.doSomething() invoked.
2017-01-28T03:08:14.755Z: MyScheduledJob.doSomething() invoked.
2017-01-28T03:08:19.758Z: MyScheduledJob.doSomething() invoked.
奇怪的问题!你为什么要这么做??Springbean默认为单例。