Spring ApplicationListener no está recibiendo eventos
Tengo la siguiente lista de aplicaciones:
package org.mycompany.listeners;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextStartedEvent;
public class MyApplicationListener implements ApplicationListener<ContextStartedEvent> {
public MyApplicationListener() {
super();
System.out.println("Application context listener is created!");
}
/**
* {@inheritDoc}
*/
public void onApplicationEvent(final ContextStartedEvent event) {
System.out.println("Context '" + event.getApplicationContext().getDisplayName() + "' is started!");
}
}
Y la siguiente definición de frijol:
<bean name="myApplicationListener" class="org.mycompany.listeners.MyApplicationListener" />
Puedo ver que bean se crea cuando se imprime el mensaje del constructor, pero el evento de inicio de contexto nunca se recibe. ¿Qué me estoy perdiendo?
3 answers
ContextStartedEvent
se publica cuando invoca explícitamente ConfigurableApplicationContext.start()
en el contexto. Si necesita un evento que se publique cuando se inicialice el contexto, utilice ContextRefreshedEvent
.
Véase también:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-10 08:59:14
Dado que no tiene frijoles cargados perezosos (según usted), lo más probable es que esté usando eventos por la razón equivocada y probablemente debería usar algo como InicializingBean interfaz en su lugar:
public class MyBean implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
// ...
}
}
Del manual de la primavera:
Para interactuar con la gestión del contenedor del ciclo de vida del frijol, puede implementar el InicializingBean de la primavera y DisposableBean interfaz. El contenedor llama a afterPropertiesSet () para el y destruir () para el último para permitir que el frijol realice ciertas acciones sobre la inicialización y destrucción de sus frijoles. Puedes también lograr la misma integración con el contenedor sin acoplamiento sus clases a las interfaces de primavera a través del uso de init-método y destruir metadatos de definición de objeto de método.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-28 14:17:45
No estoy seguro de si esto ayuda, pero recuerdo vagamente tener un problema similar, que se resolvió mediante la precarga y no la carga lenta. Aquí hay un resumen rápido de ambos
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-03 07:55:21