方式一:
创建自定义listener实现ServletContextListener,添加@WebListener注解
@WebListener
public class FirstListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("First Listener initialized...");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("First Listener destroyed...");
}
}
在SpringBoot项目启动类上添加@ServletComponentScan注解
@SpringBootApplication
// SpringBoot启动时自动扫描@WebServlet和@WebFilter和@WebListener
@ServletComponentScan
public class SpringbootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemoApplication.class, args);
}
}
启动测试
方式二:
创建自定义listener实现ServletContextListener,不需要添加@WebListener注解
public class SecondListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("Second Listener initialized...");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("Second Listener destroyed...");
}
}
在SpringBoot项目启动类中显示的注册listener为一个bean
不需要添加@ServletComponentScan注解
@SpringBootApplication
public class SpringbootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemoApplication.class, args);
}
@Bean
public ServletListenerRegistrationBean getListenerRegistrationBean() {
ServletListenerRegistrationBean registrationBean = new ServletListenerRegistrationBean(new SecondListener());
return registrationBean;
}
}
启动测试