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

网友投稿 258 2023-01-21


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://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}

*

This implementation is empty.

*/

@Override

public void configurePathMatch(PathMatchConfigurer configurer) {

}

/**

* {@inheritDoc}

*

This implementation is empty.

*/

@Override

public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {

}

/**

* {@inheritDoc}

*

This implementation is empty.

*/

@Override

public void configureAsyncSupport(AsyncSupportConfigurer configurer) {

}

/**

* {@inheritDoc}

*

This implementation is empty.

*/

@Override

public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {

}

/**

* {@inheritDoc}

*

This implementation is empty.

*/

@Override

public void addFormatters(FormatterRegistry registry) {

}

/**

* {@inheritDoc}

*

This implementation is empty.

*/

@Override

public void addInterceptors(InterceptorRegistry registry) {

}

/**

* {@inheritDoc}

*

This implementation is empty.

*/

@Override

public void addResourceHandlers(ResourceHandlerRegistry registry) {

}

/**

* {@inheritDoc}

*

This implementation is empty.

*/

@Override

public void addCorsMappings(CorsRegistry registry) {

}

/**

* {@inheritDoc}

*

This implementation is empty.

*/

@Override

public void addViewControllers(ViewControllerRegistry registry) {

}

/**

* {@inheritDoc}

*

This implementation is empty.

*/

@Override

public void configureViewResolvers(ViewResolverRegistry registry) {

}

/**

* {@inheritDoc}

*

This implementation is empty.

*/

@Override

public void addArgumentResolvers(List argumentResolvers) {

}

/**

* {@inheritDoc}

*

This implementation is empty.

*/

@Override

public void addReturnValueHandlers(List returnValueHandlers) {

}

/**

* {@inheritDoc}

*

This implementation is empty.

*/

@Override

public void configureMessageConverters(List> converters) {

}

/**

* {@inheritDoc}

*

This implementation is empty.

*/

@Override

public void extendMessageConverters(List> converters) {

}

/**

* {@inheritDoc}

*

This implementation is empty.

*/

@Override

public void configureHandlerExceptionResolvers(List exceptionResolvers) {

}

/**

* {@inheritDoc}

*

This implementation is empty.

*/

@Override

public void extendHandlerExceptionResolvers(List exceptionResolvers) {

}

/**

* {@inheritDoc}

*

This implementation returns {@code null}.

*/

@Override

public Validator getValidator() {

return null;

}

/**

* {@inheritDoc}

*

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 WebMvcConfigmfMHTVIG 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添加自定义拦截器的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇: 判断类型是否实现接口(如何判断接口调用哪个类)
下一篇:java接口参数管理工具(java接口作为参数)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~