스프링 부트에서의 Servlet Context Listener 등록 방법
안녕하세요 스프링 부트를 사용하기 위해 이전 코드를 다시 쓰려고 합니다.청취자가 한 명 있습니다.public class ExecutorListener implements ServletContextListener
.
이 청취자를 Spring Boot에 등록하려면 어떻게 해야 하나요?시도했습니다.
@SpringBootApplication
@ComponentScan
public class Application extends SpringBootServletInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext.addListener(new ExecutorListener());
}
}
근데...contextInitialized
메서드는 호출되지 않습니다.
몇 가지 시도를 할 수 있습니다.등록하세요ExecutorListener
로서@Bean
명시적으로:
@Bean
public ExecutorListener executorListener() {
return new ExecutorListener();
}
또는
명시적으로 ServletRegistrationBean을 생성하여 시도할 수 있습니다.
@Bean
public DispatcherServlet dispatcherServlet() {
DispatcherServlet servlet=new DispatcherServlet();
servlet.getServletContext().addListener(new ExecutorListener());
return servlet;
}
@Bean
public ServletRegistrationBean dispatcherServletRegistration() {
ServletRegistrationBean registrationBean = new ServletRegistrationBean(dispatcherServlet(), "/rest/v1/*");
registrationBean
.setName(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME);
return registrationBean;
}
임베디드 컨테이너를 사용하는 경우, SpringBoot 1.3.0+를 사용하는 경우, 곧 세 번째 옵션이 제공됩니다.ServletContextListener
로의 실장.@WebListener
servlet 사양 3에서 스프링 중 하나에 주석을 추가합니다.@Configuration
신수업@ServletComponentScan
(선택사항으로 필터, 서블릿 및 리스너를 검색할 패키지를 지정합니다).
다만, 현시점에서는 1.3.0+에서만 이용 가능합니다.
문서: http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/ #boot-boot-display-displays-servlets-displays-displays
주석만 사용하여 자동 검색을 원하는 경우,ExecutorListener
를 실장하다ServletContextInitializer
예를 들어 다음과 같이 주석을 붙입니다.javax.annotation.ManagedBean
거기서부터, 그냥 실장해 주세요.onStartup
방법:
@ManagedBean
public final class ExecutorListener implements ServletContextInitializer {
...
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
...
}
}
또 다른 방법은 클래스 도구를 만드는 것입니다.ServletContextListener
추가하다@WebListner
Springboot에 이것이 ServletContextListener임을 알려주는 맨 위로 이동한 후 추가합니다.@ServletComponentScan(basePackages = "xxx")
에SpringBootApplication
실제로 컨테이너에 등록하다
@WebListener
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
...
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
...
}
}
언급URL : https://stackoverflow.com/questions/32394862/how-to-register-servletcontextlistener-in-spring-boot
'programing' 카테고리의 다른 글
onFocus 및 onBlur가 반응으로 렌더링되지 않음 (0) | 2023.03.23 |
---|---|
AngularJS - jQuery 없이 dom에 HTML 요소 추가 (0) | 2023.03.23 |
그리드 또는 테이블을 각도로 표시하는 가장 좋은 방법부트스트랩3이 있는 JS? (0) | 2023.03.23 |
ASP.NET 업데이트 패널 시간 초과 (0) | 2023.03.23 |
JSON에 null 값을 포함해야 함 (0) | 2023.03.23 |