SpringBoot添加自定义拦截器的实现代码

在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添加自定义拦截器的实现代码 的全部内容, 来源链接: utcz.com/z/350942.html

回到顶部