当前位置: 首页 > 面试题库 >

是否可以保证在同一bean中使用@PostConstruct注释的方法在使用@Scheduled的方法之前执行?

干子瑜
2023-03-14
问题内容

假设我正在定义一个缓存bean,它将在启动html" target="_blank">应用程序时初始化,并以固定的间隔刷新,如下所示:

@Component
public class Cache {

     ...

     @PostConstruct
     public void initializeCache() {
     ...
     }

     @Scheduled(fixedRate = 60L * 1000L)
     public void refreshCache() {
     ...
     }

}

即使我未设置初始延迟,也可以确保@PostConstruct下的initializeCache()方法在第一次调度的refreshCache()调用之前立即执行吗?


问题答案:

是的,带有注解的方法@PostConstruct可以保证首先执行。

@Scheduled注释由活化ScheduledAnnotationBeanPostProcessor.postProcessAfterInitialization()被调用
任何豆初始化回调(像的InitializingBean的afterPropertiesSet方法或自定义的初始化方法)。



 类似资料:
  • 我有5@scheduled带注释的方法,我的ThreadPoolTaskScheduler的池大小是10。我的方法的注释是相同的,并且是这样的。 @schedule(fixedDelay=1000,initialDelay=10000) 我的问题是;

  • 问题内容: 我有几种用注释的方法。 在应用程序上下文中,我具有以下注释驱动的设置: 问题是,有时某些方法的执行会延迟几秒钟甚至几分钟。 我假设即使某个方法需要一段时间才能完成执行,其他方法仍会执行。所以我不明白延迟。 有没有办法减少甚至消除延迟? 问题答案: 为了完整起见,以下代码显示了使用java config配置调度程序的最简单方法: 当需要更多控制时,可以实现一个类。

  • 问题内容: 有人可以给MWE 直接在方法上使用注释的方法吗? 我已经看到了无数的关于在类定义中使用它的示例-但还没有方法的示例。 引用文档: 这种添加到一个类定义或 一个方法 @Target(value = {TYPE, METHOD }) 因此,我认为还有一种可能性和预期的用途-但不幸的是,我无法弄清楚。 问题答案: 这里的DataSource类具有属性url,用户名,密码,driverClas

  • 问题内容: 我已经四处寻找,没有运气。我 没有 使用Spring MVC,但仍想使用它来启用方法参数的验证。举个例子 使用MVC,可以通过简单的方法对带注释的Bean 启用此功能(请参阅5.7.4.3配置供Spring MVC使用的JSR-303验证器 )。 使用AOP应该很简单。尽管如此,我怀疑有一些标准的方法可以做到这一点。因此出现了一个问题:对于非MVC应用程序和非控制器bean,是否有类似

  • 在我的应用程序中,我有两个bean,它们的方法用注释注释。有时我需要调度两个方法,有时我需要根据应用程序的输入参数调度其中一个。加载@scheduled方法后,如何禁用它?我使用的是Spring3.1。

  • 问题内容: 构造bean之后,我想使用EntityManager从数据库中检索数据。在构造函数中是不可能的,因为EntityManager是在调用构造函数之后注入的。所以我试图用@PostConstruct注释的方法来做。根据API,在完成所有注入后将调用PostConstruct方法。执行查询是可行的,但是它总是返回一个空列表。如果我在其他方法中使用相同的查询,它将返回正确的结果。有人知道,为什