In diesem Artikel wird hauptsächlich ein kurzes Setup-Tutorial zur Verwendung von Listener in SpringBoot 2 vorgestellt. Vor dem Lesen müssen Sie die grundlegende Verwendung von Listener und die Erstellung eines SpringBoot-Projekts verstehen.
Schnelle Demonstrationsoperation
Schritt eins: Schreiben Sie einen Listener und deklarieren Sie die @WebListener-Annotation für die Listener-Klasse. Der spezifische Code lautet wie folgt:
@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 监听器销毁..."); } }
Schritt 2: Fügen Sie die geschriebene ApplicationListener-Klasse über JavaConfig in den Spring-Kontext ein.
Übergeben Sie den benutzerdefinierten ApplicationListener an die Konstruktion von ServletListenerRegistrationBean und erstellen Sie dann eine ServletListenerRegistrationBean-Bean-Instanz. Der spezifische Code lautet wie folgt:
@Configuration public class WebApplicationConfig { @Bean public ServletListenerRegistrationBean<ApplicationListener> userServlet(){ return new ServletListenerRegistrationBean<ApplicationListener> (new ApplicationListener()); } }
Oder deklarieren Sie die Annotation @ServletComponentScan in der Startup-Klasse Der spezifische Code lautet wie folgt:
@SpringBootApplication @ServletComponentScan public class SpringbootExamplesApplication { public static void main(String[] args) { SpringApplication.run(SpringbootExamplesApplication.class, args); } }
Test
Starten Sie das SpirngBoot-Projekt und Sie werden sehen, dass der in ApplicationListener definierte ApplicationListener-Listener zerstört wird ... Protokollinformationen.
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 监听器启动...
Starten Sie das Projekt hier im Startstatus. Obwohl ein Fehler gemeldet wird, können Sie die im ApplicationListener definierte Protokollinformationsausgabe zur Zerstörung sehen.
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 :
Zusammenfassung
Die Schritte zur Integration von Listener in SpringBoot sind wie folgt:
Muss @WebListener auf dem Listener deklariert werden
in der Startup-Klasse Deklarieren Sie die Annotation @ServletComponentScan oder umschließen Sie den
Listener über ServletListenerRegistrationBean und fügen Sie ihn über JavaConfig
in den Spring-Kontext ein.
Codebeispiel
Meine lokale Umgebung ist wie folgt:
SpringBoot-Version: 2.1.0.RELEASE
Apache Maven Version: 3.6.0
Java Version: 1.8.0_144
IDEE: Spring Tools Suite (STS)
Das obige ist der detaillierte Inhalt vonSpielen Sie mit SpringBoot 2 und integrieren Sie Listener schnell. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!