本篇文章给大家带来的内容是关于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;@configurationpublic 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添加自定义拦截器的方法实现(代码)的详细内容。