Tengo un Spring ApplicationListener Bean registrado para escuchar los eventos ContextRefreshed. Sin embargo, por alguna extraña razón, recibo dos llamadas al método onApplicationEvent(ContextRefreshedEvent)
al completar la inicialización del contexto. ¿Es este comportamiento normal o es indicativo de un problema con mi configuración? Estoy usando Jetty 8 para mi contenedor Servlet.¿Por qué mi evento Spring ContextRefreshed se llama dos veces?
Mi configuración web.xml relevante es la siguiente
<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>
Gracias!
¡Eso fue todo! Usando la propiedad 'id' o' displayName' de ApplicationContext, ahora puedo distinguir entre los dos eventos. – Andre
O si usted @Autowire the appContext (o implementa ApplicationContextAware) puede comparar ese appContext contra el del evento. – sourcedelica
@Andre Pregunta de un novato: ¿Cómo acceder a ID o displayName desde ContextRefreshedEvent? –