Maison >Java >javaDidacticiel >Jouez avec SpringBoot 2 et intégrez rapidement Listener

Jouez avec SpringBoot 2 et intégrez rapidement Listener

(*-*)浩
(*-*)浩avant
2019-10-10 16:20:542373parcourir

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.

Jouez avec SpringBoot 2 et intégrez rapidement Listener

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: &#39;characterEncodingFilter&#39; to: [/*]
2019-10-04 00:58:39.376  INFO 5184 --- [  restartedMain] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: &#39;hiddenHttpMethodFilter&#39; to: [/*]
2019-10-04 00:58:39.376  INFO 5184 --- [  restartedMain] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: &#39;formContentFilter&#39; to: [/*]
2019-10-04 00:58:39.377  INFO 5184 --- [  restartedMain] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: &#39;requestContextFilter&#39; 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer