2009-11-15 8 views
6

¿Hay algún gancho en el proceso de carga del Spring ApplicationContext?Ganchos de carga del contexto de aplicación de resorte

Quiero ejecutar un código justo antes de que se cargue el contexto de la aplicación (antes de que se creen instancias de beans/properties/aspects/etc ...).

gracias de antemano

Respuesta

6

Tal BeanFactoryPostProcessors habitación sus necesidades? Se ejecutan después de que se leen todos los archivos de configuración XML, pero antes de que se cree una instancia de cualquier (otro) beans.

+0

grande, eso es lo que buscaba, muchas gracias – mlo55

5

También puede usar el ApplicationListener para recibir notificaciones de eventos como ContextClosedEvent, ContextStartedEvent o ContextStoppedEvent.

Más información en el capítulo IoC Container.

+1

No creo que 'ApplicationListeners' recibir una notificación antes de * * el contexto comienza, no parece haber un evento para eso. – skaffman

+0

del ContextRefreshedEvent JavaDoc: "Evento generado cuando un ApplicationContext se inicializa o se actualiza". Esta noche haré una cita si el evento se envía * antes * de la inicialización o justo después. – Vladimir

+2

Estoy tratando de escuchar en ContextStartedEvent, pero parece que el ciclo de vida predeterminado de un contexto no llama explícitamente al método de inicio, por lo que el evento no se publica. Por defecto, ciclo de vida simplemente me refiero al inicio de todo el servidor web y el contexto (que esperaba lanzar ContextStartedEvent). ¿Alguna idea de por qué es eso? – Eugen

2

Acabo de declarar mi propio ContextLoaderListener para realizar el trabajo deseado antes de cargar el contexto de Spring. Se adapta para aplicaciones web, justo antes de declarar que el contexto primavera oyente:

public class MyServletContextListener implements ServletContextListener { 

    @Override 
    public void contextDestroyed(ServletContextEvent arg0) { 

    } 

    @Override 
    public void contextInitialized(ServletContextEvent arg0) { 
     //Perform your stuff here 
    } 

} 
<listener> 
    <listener-class> 
     com.myCompany.listeners.MyServletContextListener</listener-class> 
</listener> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
Cuestiones relacionadas