SpringBoot添加自定义拦截器的实现代码
2018-09-19 15:29
911 查看
在Controller层时,往往会需要校验或验证某些操作,而在每个Controller写重复代码,工作量比较大,这里在Springboot项目中 ,通过继承WebMvcConfigurerAdapter,添加拦截器。
1、WebMvcConfigurerAdapter源码
/* * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.web.servlet.config.annotation; import java.util.List; import org.springframework.format.FormatterRegistry; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.validation.MessageCodesResolver; import org.springframework.validation.Validator; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.HandlerMethodReturnValueHandler; import org.springframework.web.servlet.HandlerExceptionResolver; /** * An implementation of {@link WebMvcConfigurer} with empty methods allowing * subclasses to override only the methods they're interested in. * * @author Rossen Stoyanchev * @since 3.1 */ public abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer { /** * {@inheritDoc} * <p>This implementation is empty. */ @Override public void configurePathMatch(PathMatchConfigurer configurer) { } /** * {@inheritDoc} * <p>This implementation is empty. */ @Override public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { } /** * {@inheritDoc} * <p>This implementation is empty. */ @Override public void configureAsyncSupport(AsyncSupportConfigurer configurer) { } /** * {@inheritDoc} * <p>This implementation is empty. */ @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { } /** * {@inheritDoc} * <p>This implementation is empty. */ @Override public void addFormatters(FormatterRegistry registry) { } /** * {@inheritDoc} * <p>This implementation is empty. */ @Override public void addInterceptors(InterceptorRegistry registry) { } /** * {@inheritDoc} * <p>This implementation is empty. */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { } /** * {@inheritDoc} * <p>This implementation is empty. */ @Override public void addCorsMappings(CorsRegistry registry) { } /** * {@inheritDoc} * <p>This implementation is empty. */ @Override public void addViewControllers(ViewControllerRegistry registry) { } /** * {@inheritDoc} * <p>This implementation is empty. */ @Override public void configureViewResolvers(ViewResolverRegistry registry) { } /** * {@inheritDoc} * <p>This implementation is empty. */ @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { } /** * {@inheritDoc} * <p>This implementation is empty. */ @Override public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers) { } /** * {@inheritDoc} * <p>This implementation is empty. */ @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { } /** * {@inheritDoc} * <p>This implementation is empty. */ @Override public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { } /** * {@inheritDoc} * <p>This implementation is empty. */ @Override public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) { } /** * {@inheritDoc} * <p>This implementation is empty. */ @Override public void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) { } /** * {@inheritDoc} * <p>This implementation returns {@code null}. */ @Override public Validator getValidator() { return null; } /** * {@inheritDoc} * <p>This implementation returns {@code null}. */ @Override public MessageCodesResolver getMessageCodesResolver() { return null; } }
可以看出,该类 还能配置其他很多操作,例如异常处理,跨域请求等配置。
2、自动义Web配置类
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(getMyInterceptor()).addPathPatterns("/**"); } @Bean public MyInterceptor getMyInterceptor(){ return new MyInterceptor(); } }
如果需要添加多个拦截器,InterceptorRegistry registry.addInterceptor方法
public InterceptorRegistration addInterceptor(HandlerInterceptor interceptor) { InterceptorRegistration registration = new InterceptorRegistration(interceptor); this.registrations.add(registration); return registration; }
registrations是个数组结构,可以添加多个
3、自动义拦截器
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; public class MyInterceptor extends HandlerInterceptorAdapter { final Logger logger = LoggerFactory.getLogger(getClass()); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //拦截操作 return true; } }
总结
以上所述是小编给大家介绍的SpringBoot添加自定义拦截器的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章:
相关文章推荐
- 实现SpringBoot自定义拦截器
- SpringBoot使用自定义注解+拦截器 实现日志记录
- (十三)SpringBoot之Spring-Data-Jpa(二)CRUD实现以及添加自定义方法
- (十三)SpringBoot之Spring-Data-Jpa(二)CRUD实现以及添加自定义方法
- 利用spring的拦截器自定义缓存的实现实例代码
- spring-boot添加自定义拦截器
- SpringBoot中自定义注解实现控制器访问次数限制
- Spring Boot学习之路——自定义拦截器
- spring boot 使用spring AOP实现拦截器
- GridView 实现自定义分页、排序、查询、添加、编辑、多选删除 之代码规范
- Spring Boot添加自定义Filter
- GridView 实现自定义分页、排序、查询、添加、编辑、多选删除 之代码规范
- Spring Boot中整合Spring Security并自定义验证代码实例
- Spring Boot+AngularJS+BootStrap实现进度条示例代码
- springboot实现拦截器之验证登录示例
- spring自定义拦截器实现用户登入权限检查
- 利用spring的拦截器自定义缓存的实现
- 用CXF编写基于spring的web service 并添加cxf日志拦截器和自定义拦截器
- spring boot实现过滤器和拦截器demo
- Spring Boot实现跨域访问实现代码