在Controller層時,往往會需要校驗或驗證某些操作,而在每個Controller寫重復(fù)代碼,工作量比較大,這里在Springboot項目中 ,通過繼承WebMvcConfigurerAdapter,添加攔截器。
宿遷網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,宿遷網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為宿遷成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的宿遷做網(wǎng)站的公司定做!
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} *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 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是個數(shù)組結(jié)構(gòu),可以添加多個
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; } }
總結(jié)
以上所述是小編給大家介紹的SpringBoot添加自定義攔截器的實現(xiàn)代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對創(chuàng)新互聯(lián)網(wǎng)站的支持!