不是的,自定义拦截器、过滤器、监听器可以在多个地方进行注册。下面分别介绍一下各自的注册方式:
- 拦截器(Interceptor):可以通过
WebMvcConfigurer
接口的addInterceptors
方法进行注册,也可以通过@Bean
注解将自定义拦截器添加到 Spring 容器中,然后通过WebMvcConfigurer
接口的configureDefaultServletHandling
方法或者@EnableWebMvc
注解的interceptors
属性进行注册。 - 过滤器(Filter):可以通过
@WebFilter
注解进行注册,也可以通过FilterRegistrationBean
类将自定义过滤器添加到 Spring 容器中,然后通过FilterRegistrationBean
类的addUrlPatterns
方法或者@ServletComponentScan
注解扫描自定义过滤器进行注册。 - 监听器(Listener):可以通过
@WebListener
注解进行注册,也可以通过ServletContextListenerRegistrationBean
类将自定义监听器添加到 Spring 容器中,然后通过ServletContextListenerRegistrationBean
类的addListener
方法或者@ServletComponentScan
注解扫描自定义监听器进行注册。 需要注意的是,无论是使用哪种方式进行注册,自定义拦截器、过滤器、监听器都需要在 Spring MVC 容器启动前进行注册,否则将无法生效。