이 글은 주로 SpringBoot 2에서 Listener를 사용하는 방법에 대한 빠른 설정 튜토리얼을 소개합니다. 읽기 전에 Listener의 기본 사용법과 SpringBoot 프로젝트 빌드 방법을 이해해야 합니다.
빠른 데모 작업
1단계: 리스너를 작성하고 리스너 클래스에 @WebListener 주석을 선언합니다. 구체적인 코드는 다음과 같습니다.
@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 监听器销毁..."); } }
2단계: 작성된 ApplicationListener 클래스를 JavaConfig를 통해 Spring 컨텍스트에 삽입합니다.
사용자 정의 ApplicationListener를 ServletListenerRegistrationBean 구성에 전달한 다음 ServletListenerRegistrationBean Bean 인스턴스를 생성합니다.
@Configuration public class WebApplicationConfig { @Bean public ServletListenerRegistrationBean<ApplicationListener> userServlet(){ return new ServletListenerRegistrationBean<ApplicationListener> (new ApplicationListener()); } }
또는 시작 클래스에서 @ServletComponentScan 주석을 선언합니다.
@SpringBootApplication @ServletComponentScan public class SpringbootExamplesApplication { public static void main(String[] args) { SpringApplication.run(SpringbootExamplesApplication.class, args); } }
Test
Startup SpirngBoot 프로젝트는 ApplicationListener에 정의된 ApplicationListener 리스너 파괴... 로그 정보를 확인합니다.
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 监听器启动...
여기서 시작 상태에서 프로젝트를 시작하면 오류가 발생하지만 폐기를 위해 ApplicationListener에 정의된 로그 정보 출력을 볼 수 있습니다.
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 :요약
SpringBoot의 리스너 단계 무결성:
Listener@Weblistener
에서 선언하여 @ServletcomComponentscan 카테고리에서 선언하거나 ServletListenerRegistration Onfig를 통해
Listener를 패키징해야 합니다.
방법은 이는 Spring 컨텍스트에 주입됩니다.코드 예
내 로컬 환경은 다음과 같습니다.
SpringBoot 버전: 2.1.0.RELEASEApache Maven 버전: 3.6.0Java 버전: 1.8.0_144IDEA: 도구 스위트 (STS)🎜위 내용은 SpringBoot 2를 사용하고 Listener를 빠르게 통합하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!