为什么Spring@Scheduled不能与@Bean一起工作

为什么Spring@Scheduled不能与@Bean一起工作,spring,spring-boot,scheduled-tasks,Spring,Spring Boot,Scheduled Tasks,我正在使用Spring引导和调度 在Spring中,为什么该方法可以正常工作(该方法每5秒调用一次)- 但事实并非如此(该方法不会每5秒调用一次)- @Bean注释用于基于Java的配置,以注释构造Bean的方法。它只是一个错误的注释,不应该出现在那里。您在该方法上添加的两个注释放在一起没有多大意义 @Bean用于为应用程序中的自动连接部门创建一个单例 @Scheduled用于安排要重新运行的任务。 这没有意义的原因是,一般来说,bean是在应用程序启动时创建的,并自动连接到它们的依赖项中(完

我正在使用Spring引导和调度

在Spring中,为什么该方法可以正常工作(该方法每5秒调用一次)-

但事实并非如此(该方法不会每5秒调用一次)-


@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默认为单例。