SpringBoot整合Listener监听器

方式一:

创建自定义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;
	}
}

启动测试

经验分享 程序员 微信小程序 职场和发展