Java 春天是怎样的';计划的实际工作?
我一直认为Java 春天是怎样的';计划的实际工作?,java,spring,aop,Java,Spring,Aop,我一直认为@Scheduled通过代理整个bean来工作,就像@Async、@Transactional等一样。 因此,我很惊讶,下面的内容很有魅力: @Component public static class Bean { @Scheduled(fixedRate = 1000) private void scheduled() { System.out.println("Yo");
@Scheduled
通过代理整个bean来工作,就像@Async
、@Transactional
等一样。
因此,我很惊讶,下面的内容很有魅力:
@Component
public static class Bean {
@Scheduled(fixedRate = 1000)
private void scheduled() {
System.out.println("Yo");
}
}
他们是改变了什么,还是从一开始就改变了?
谢谢。简单地说,通过最简单的配置,当Spring检测到
@EnableScheduling
注释时,它将创建一个新的ScheduledAnnotationBeanPostProcessor
,该处理器能够处理@Scheduled
注释。使用反射找到@Scheduled
注释后,它将读取它们的配置,然后注册它们,以便任务调度器调用它们。ScheduledTaskRegistrar
用于帮助将任务提交给ScheduledThreadPoolExecutor
如您所见,未创建任何代理。很有趣,谢谢。不过,我觉得有点困惑。我的意思是你希望它与其他人保持一致。无论如何,我想在可能的情况下避免不必要的代理是有意义的。