Spring应用程序中是否有办法知道初始化何时完成?部署应用程序后,我必须运行一些代码,并且我正在搜索ServletContextListener或Spring built-in events之类的内容。
答案 0 :(得分:6)
根据您对我的评论的回复,我将回答您可以做的多件事来处理初始化的Spring bean。
BeanPostProcessor
。它有两个被视为回调的方法,我相信postProcessAfterInitialization
是你会感兴趣的方法。BeanPostProcessor
的问题是它们是为ApplicationContext
中的每个bean运行的。 {1}},因此您需要确保只查找您有兴趣应用此处理的bean。要使用BeanPostProcessor
,您只需将其定义为ApplicationContext
。InitializingBean
界面。它定义了ApplicationContext
调用的单个方法afterPropertiesSet
。这比1号更有优势,因为它可以基于bean逐个应用(不适用于ApplicationContext
中的所有bean)。@PostContstuct
注释。该注释告诉ApplicationContext
该方法应该在初始化bean之后运行。这类似于数字2,因为它是以bean为基础执行的。有关ApplicationContext
回调生命周期的更多信息,请参阅this location。
答案 1 :(得分:2)
您可以使用
@PostConstruct
注释ApplicationListener
触发的ContextStartedEvent
(但如果您有一个典型的Web应用程序,请注意您有两个上下文,因此有两个ContextStartedEvent
。