Cet article présente principalement un didacticiel de configuration rapide sur la façon d'utiliser Listener dans SpringBoot 2. Avant de lire, vous devez comprendre l'utilisation de base de Listener et comment créer un projet SpringBoot.
Opération de démonstration rapide
Première étape : écrivez un Listener et déclarez l'annotation @WebListener sur la classe Listener. Le code spécifique est le suivant :
@WebListener public class ApplicationListener implements ServletContextListener{ private Logger log = LoggerFactory.getLogger(ApplicationListener.class); @Override public void contextInitialized(ServletContextEvent sce) { log.info("ApplicationListener 监听器启动..."); } @Override public void contextDestroyed(ServletContextEvent sce) { log.info("ApplicationListener 监听器销毁..."); } }
Étape 2 : Injectez la classe ApplicationListener écrite dans le contexte Spring via JavaConfig.
Passez le ApplicationListener personnalisé dans la construction de ServletListenerRegistrationBean, puis créez une instance de ServletListenerRegistrationBean Bean. Le code spécifique est le suivant :
@Configuration public class WebApplicationConfig { @Bean public ServletListenerRegistrationBean<ApplicationListener> userServlet(){ return new ServletListenerRegistrationBean<ApplicationListener> (new ApplicationListener()); } }
Ou déclarez l'annotation @ServletComponentScan sur la classe de démarrage. le code spécifique est le suivant :
@SpringBootApplication @ServletComponentScan public class SpringbootExamplesApplication { public static void main(String[] args) { SpringApplication.run(SpringbootExamplesApplication.class, args); } }
Test
Démarrez le projet SpirngBoot et vous verrez que l'écouteur ApplicationListener défini dans ApplicationListener est détruit... les informations du journal.
2019-10-04 00:58:39.361 INFO 5184 --- [ restartedMain] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/] 2019-10-04 00:58:39.375 INFO 5184 --- [ restartedMain] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] 2019-10-04 00:58:39.376 INFO 5184 --- [ restartedMain] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 2019-10-04 00:58:39.376 INFO 5184 --- [ restartedMain] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'formContentFilter' to: [/*] 2019-10-04 00:58:39.377 INFO 5184 --- [ restartedMain] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*] 2019-10-04 00:58:39.420 INFO 5184 --- [ restartedMain] c.lijunkui.listener.ApplicationListener : ApplicationListener 监听器启动...
Démarrez le projet ici dans l'état de démarrage Bien qu'une erreur soit signalée, vous pouvez voir la sortie des informations du journal définie dans ApplicationListener pour la destruction.
Caused by: java.net.BindException: Address already in use: bind at sun.nio.ch.Net.bind0(Native Method) ~[na:1.8.0_144] at sun.nio.ch.Net.bind(Net.java:433) ~[na:1.8.0_144] at sun.nio.ch.Net.bind(Net.java:425) ~[na:1.8.0_144] at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) ~[na:1.8.0_144] at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) ~[na:1.8.0_144] at org.apache.tomcat.util.net.NioEndpoint.initServerSocket(NioEndpoint.java:236) ~[tomcat-embed-core-9.0.12.jar:9.0.12] at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:210) ~[tomcat-embed-core-9.0.12.jar:9.0.12] at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1108) ~[tomcat-embed-core-9.0.12.jar:9.0.12] at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:550) ~[tomcat-embed-core-9.0.12.jar:9.0.12] at org.apache.catalina.connector.Connector.startInternal(Connector.java:957) ~[tomcat-embed-core-9.0.12.jar:9.0.12] ... 19 common frames omitted 2019-10-04 01:01:07.860 INFO 7864 --- [ restartedMain] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2019-10-04 01:01:07.863 INFO 7864 --- [ restartedMain] c.lijunkui.listener.ApplicationListener : ApplicationListener 监听器销毁... 2019-10-04 01:01:07.876 INFO 7864 --- [ restartedMain] ConditionEvaluationReportLoggingListener :
Résumé
Les étapes pour intégrer Listener dans SpringBoot sont les suivantes :
Besoin de déclarer @WebListener sur le Listener
sur la classe de démarrage Déclarez l'annotation @ServletComponentScan ou encapsulez le
Listener via ServletListenerRegistrationBean, puis injectez-le dans le contexte Spring via JavaConfig
.
Exemple de code
Mon environnement local est le suivant :
Version SpringBoot : 2.1.0.RELEASE
Version Apache Maven : 3.6.0
Version Java : 1.8.0_144
IDÉE : Suite d'outils Spring (STS)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!