SpringBoot-Listener、filter、Intercepter、自定义事件

155 阅读1分钟

Listener

@WebListener

implements ServletContextListener/ServletRequestListener/HttpSessionListener/ServletRequestAttributeListener

@ServletComponentScan//扫描@WebListener

Filter

三种方式:

1、利用@WebFilter注解配置

@WebFilter(filterName="customFilter",urlPattern="/*")

public class CutomeFilter implements Filter

@ServletComponentScan

缺点:无法保证过滤器顺序

2、FilterRegistrationBean的方式(推荐这种)

@Configuration

public class FilterRegistration{

     @Bean

      public FilterRegistrationBean filterRegistrationBean{

            FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();

            filterRegistrationBean.setFilter(new CustomFilter());

            filterRegistrationBean.setName("customFilter");

            filterRegistrationBean.addUrlPatterns("/*");

            filterRegistrationBean.setOrder(10);

            return filterRegistrationBean;

      }

}

public class CutomeFilter implements Filter{

}

3、xml配置方式

拦截器

@Component

A implements HandlerIntercepter

@Configuration

implements WebMvcConfigure{

 @Resource

 A a;

addIntercepter(IntercepterRegistry intercepterRegistry){

intercepterRegistry.addIntercepter(a).addPattern("/*");

}

}

自定义事件

3要素:事件监听者、事件发布者、事件本身

事件监听者

@Component

MyListener implements ApplicationListener

事件本身

MyEvent extends ApplicationEnvent

事件发布

@Autowired

ApplicationContext applicationContext;

applicationContext.publishEnvent(new MyEvent(""));