• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

为什么我的Spring ContextRefreshed事件被调用两次?

java 来源:Andre 4次浏览

我有一个Spring ApplicationListener bean注册来侦听ContextRefreshed事件。但由于某种奇怪的原因,我在上下文初始化完成后得到了两个调用onApplicationEvent(ContextRefreshedEvent)方法。这是正常行为还是表示配置有问题?我为我的Servlet容器使用Jetty 8。为什么我的Spring ContextRefreshed事件被调用两次?

我相关的web.xml配置如下

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/config/spring/spring-config.xml</param-value> 
</context-param> 
<servlet> 
    <servlet-name>Spring</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value></param-value> 
    </init-param> 
<load-on-startup>1</load-on-startup> 
</servlet> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
<servlet-mapping> 
    <servlet-name>Spring</servlet-name> 
    <url-pattern>/service/*</url-pattern> 
</servlet-mapping> 

谢谢!

===========解决方案如下:

即使您没有为您的DispatcherServlet指定contextConfigLocation,它仍会创建一个子上下文,而第二个刷新事件是针对该上下文的。使用event.getApplicationContext()来找出事件的上下文。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)