关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回

怎么在Spring Boot项目中定制一个拦截器

发布时间:2022-09-27 11:08:43

怎么在Spring Boot项目中定制一个拦截器?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

添加拦截器不仅是在WebConfiguration中定义bean,Spring Boot提供了基础类WebMvcConfigurerAdapter,我们项目中的WebConfiguration类需要继承这个类。

继承WebMvcConfigurerAdapter;

为LocaleChangeInterceptor添加@Bean定义,这仅仅是定义了一个interceptor spring bean,但是Spring boot不会自动将它加入到调用链中。

拦截器需要手动加入调用链。

修改后完整的WebConfiguration代码如下:

package com.test.bookpub;

import org.apache.catalina.filters.RemoteIpFilter;
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;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;

@Configuration
public class WebConfiguration extends WebMvcConfigurerAdapter {
  @Bean  public RemoteIpFilter remoteIpFilter() {
    return new RemoteIpFilter();
  }

  @Bean  public LocaleChangeInterceptor localeChangeInterceptor() {
    return new LocaleChangeInterceptor();
  }
  @Override  public void addInterceptors(InterceptorRegistry registry {
    registry.addInterceptor(localeChangeInterceptor());
  }
}

使用mvn spring-boot:run运行程序,然后通过httpie访问http://localhost:8080/books?locale=foo,在终端看到如下错误信息。

Servlet.service() for servlet [dispatcherServlet] in context with path [] 
threw exception [Request processing failed; nested exception is 
java.lang.UnsupportedOperationException: Cannot change HTTP accept 
header - use a different locale resolution strategy] with root cause

关于怎么在Spring Boot项目中定制一个拦截器问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注风纳云行业资讯频道了解更多相关知识。

另外有需要云服务器可以了解下风纳云fengnayun.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


/template/Home/Dawn/PC/Static

选择风纳云,也许是您成就一番大事业的开端

注册账号