Comment enregistrer ServletContextListener au printemps de démarrage
Bonjour, je suis en train de réécrire mon ancien code à utiliser le Printemps de Démarrage.
J'ai un auditeur public class ExecutorListener implements ServletContextListener
.
Comment puis-je enregistrer ce listener pour le Printemps de Démarrage?
J'ai essayé:
@SpringBootApplication
@ComponentScan
public class Application extends SpringBootServletInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext.addListener(new ExecutorListener());
}
}
Mais la contextInitialized
méthode n'est pas appelée.
OriginalL'auteur bilak | 2015-09-04
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer deux ou trois choses:
Registre
ExecutorListener
comme un@Bean
explicitement:ou
Vous pouvez essayer avec la création explicitement ServletRegistrationBean:
OriginalL'auteur jny
Si vous utilisez un conteneur embarqué, il y aura bientôt une troisième option si vous utilisez SpringBoot 1.3.0+
D'annoter vos
ServletContextListener
mise en œuvre avec@WebListener
de servlet spec 3, puis annoter un de vos Printemps@Configuration
classes avec la nouvelle@ServletComponentScan
(et éventuellement dire les paquets à balayage pour les filtres, les servlets et les auditeurs).Uniquement disponible en 1.3.0+ en ce moment: http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/web/servlet/ServletComponentScan.html
Docs:
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-embedded-container-servlets-filters-listeners
OriginalL'auteur Tom Bunting
Dans le cas où vous préférez découverte automatique à l'aide d'annotations seulement, faites votre
ExecutorListener
mettre en œuvre lesServletContextInitializer
et, par exemple, de les annoter avecjavax.annotation.ManagedBean
. À partir de là, il suffit de mettre en œuvre lesonStartup
méthode:OriginalL'auteur buer