首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹簧云-REST模版不会被注入拦截器

弹簧云-REST模版不会被注入拦截器
EN

Stack Overflow用户
提问于 2017-04-05 23:47:47
回答 1查看 1.3K关注 0票数 0

我在我的spring引导应用程序中创建了一个boot模板,如下所示:

代码语言:javascript
复制
@Configuration
public class MyConfiguration {

@LoadBalanced
@Bean
  RestTemplate restTemplate() {
    return new RestTemplate();
  }
}

这在所有的课程中都能很好的工作。但是,在我的拦截器中,这会抛出null指针异常。

原因是什么,以及如何在我的拦截器中配置负载平衡(使用丝带) What模板?

更新:

我的拦截器:

代码语言:javascript
复制
 public class MyInterceptor implements HandlerInterceptorAdapter {

  @Autowired
  RestTemplate restTemplate;

  public boolean preHandle(HttpServletRequest request,
    HttpServletResponse response, Object handler)
    throws Exception {

    HttpHeaders headers = new HttpHeaders();
    ...
    HttpEntity<String> entity = new HttpEntity<String>(headers);

    //restTemplate is null here
    ResponseEntity<String> result = 
    restTemplate.exchange("<my micro service url using service name>", 
                          HttpMethod.POST, entity, String.class);
    ...

    return true;
}

拦截器被添加到spring引导应用程序中,如下所示:

代码语言:javascript
复制
@Configuration  
public class MyConfigAdapter extends WebMvcConfigurerAdapter  {

@Override
public void addInterceptors(InterceptorRegistry registry) {
   registry.addInterceptor(new MyInterceptor()).addPathPatterns("/*");
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-06 02:05:37

您误解了@Autowired的工作原理。一旦您在new MyInterceptor()方法之外的@Bean方法,它将不会自动处理。

如下所示:

代码语言:javascript
复制
@Configuration  
public class MyConfigAdapter extends WebMvcConfigurerAdapter  {

    @Autowired
    MyInterceptor myInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(myInterceptor).addPathPatterns("/*");
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43243402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档