Spring Cloud-RestTemplate不会注入拦截器
我在Spring Boot应用程序中创建了一个resttemplate,如下所示:
@Configuration
public class MyConfiguration {
@LoadBalanced
@Bean
RestTemplate restTemplate() {
return new RestTemplate();
}
}
自动接线时,在所有类中都可以正常工作。但是,在我的拦截器中,这引发了nullpointer异常。
原因可能是什么?如何在拦截器中配置负载平衡(使用功能区)resttemplate?
更新:
我的拦截器:
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 Boot应用程序中:
@Configuration
public class MyConfigAdapter extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/*");
}
}
-
您误会了
@Autowired
工作原理。一旦您new MyInterceptor()
处于@Bean
方法之外,它就不会自动连接。执行以下操作:
@Configuration public class MyConfigAdapter extends WebMvcConfigurerAdapter { @Autowired MyInterceptor myInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(myInterceptor).addPathPatterns("/*"); } }
-
Spring拦截器的Java配置,其中拦截器使用自动装配的Spring Bean
2021-02-02 关注 0 浏览129 1答案
-
spring 3拦截器顺序
2021-02-02 关注 0 浏览97 1答案
-
AngularJS:将服务注入HTTP拦截器(循环依赖)
2021-02-01 关注 0 浏览127 1答案
-
Spring MVC拦截器映射问题
2021-02-02 关注 0 浏览80 1答案
-
Spring:标准日志方面(拦截器)
2021-02-02 关注 0 浏览125 1答案
-
Spring MVC中的拦截器
2021-02-02 关注 0 浏览87 1答案
-
Spring Boot添加Http请求拦截器
2021-02-02 关注 0 浏览226 1答案
-
没有XML的Java Spring拦截器
2021-02-02 关注 0 浏览64 1答案
-
如何将springbean注入到struts拦截器中
2021-01-30 关注 0 浏览101 1答案
-
Spring 3 MVC @Controller与AOP拦截器?
2021-02-02 关注 0 浏览131 1答案