Spring 应用程序中是否有办法知道初始化何时完成?部署应用程序后,我必须运行一些代码,并且正在搜索诸如 ServletContextListener 或Spring built-in events 之类的内容。
问问题
5348 次
2 回答
7
根据您对我的评论的回复,我将回复您可以执行的多种操作来处理已初始化的 Spring bean。
- 您可以使用
BeanPostProcessor
. 它有两种被视为回调的方法,我相信这postProcessAfterInitialization
是您会感兴趣的方法。带有BeanPostProcessor
's 的事情是它们为 中的每个 bean 运行ApplicationContext
,因此您需要确保寻找只有您有兴趣应用此处理的 bean。要使用BeanPostProcessor
,您只需将其定义为ApplicationContext
. - 实现
InitializingBean
接口。它定义了一个afterPropertiesSet
由ApplicationContext
. 这比数字 1 有优势,因为它可以逐个 bean 应用(不适用于 中的所有 beanApplicationContext
)。 - 在方法上使用
@PostContstuct
注解。这个注解告诉ApplicationContext
这个方法应该在 bean 被初始化之后运行。这与第 2 点类似,因为它是逐个 bean 执行的。
ApplicationContext
可以在此位置阅读有关回调生命周期的更多信息。
于 2013-07-09T21:16:24.010 回答
2
您可以使用
@PostConstruct
注解- 或由
ApplicationListener
触发的ContextStartedEvent
(但请注意,如果您有一个典型的 Web 应用程序,则您有两个上下文,因此有两个ContextStartedEvent
s.
于 2013-07-09T21:11:29.423 回答