【发布时间】:2018-06-28 08:09:36
【问题描述】:
我在 Web 应用程序中使用 Spring 4(不是 Spring Boot)。在创建应用程序上下文中的任何 bean 之前,我需要运行一些初始化代码。我试图创建org.springframework.context.ApplicationContextInitializer 的实现并将其注册到spring.factories 但由于某种原因没有被选中。我该怎么做?
【问题讨论】:
我在 Web 应用程序中使用 Spring 4(不是 Spring Boot)。在创建应用程序上下文中的任何 bean 之前,我需要运行一些初始化代码。我试图创建org.springframework.context.ApplicationContextInitializer 的实现并将其注册到spring.factories 但由于某种原因没有被选中。我该怎么做?
【问题讨论】:
事实证明,实施org.springframework.context.ApplicationContextInitializer 是正确的方法。因为在我的项目中我不使用 Spring MVC 实现,所以这个初始化程序应该注册在 web.xml 而不是 spring.factories 中。这是一个例子:
<context-param>
<param-name>contextInitializerClasses</param-name>
<param-value>my.company.MyContextInitializer</param-value>
</context-param>
【讨论】:
这应该可行。如果没有,请发布您的代码。
@Component
public class SampleBootstrap implements ApplicationListener<ContextRefreshedEvent> {
....
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
Do Something();
}
}
【讨论】: