三、Spring Boot 整合listener
(一)、方式一(扫描注解)
1、创建listener
- 创建自定义
listen
类 - 添加注解
@WebListener
- 实现接口
ServletContextListener
- 重写方法
contextDestroyed
、contextInitialized
代码:
package com.ikaros.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class FirstListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
ServletContextListener.super.contextDestroyed(sce);
}
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("listener1 初始化...");
}
}
2、创建启动类
- 创建启动类
- 添加注解
@ServletComponentScan
代码:
package com.ikaros;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
3、测试
(二)、方式二
1、创建listener类
- 创建自定义
listen
类 - 实现接口
ServletContextListener
- 重写方法
contextDestroyed
、contextInitialized
代码:
package com.ikaros.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
public class SecondListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
ServletContextListener.super.contextDestroyed(sce);
}
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("listener2 初始化...");
}
}
2、创建启动类
- 创建启动类
- 添加自定义方法,返回值类型为
ServletListenerRegistrationBean
- 注册自定义
listener
类
ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new SecondListener());
return bean;
- 自定义方法添加注解
@Bean
代码:
package com.ikaros;
import com.ikaros.listener.SecondListener;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class Application2 {
public static void main(String[] args) {
SpringApplication.run(Application2.class, args);
}
@Bean
public ServletListenerRegistrationBean<SecondListener> getListenerRegistration(){
ServletListenerRegistrationBean<SecondListener> bean = new ServletListenerRegistrationBean(new SecondListener());
return bean;
}
}