0

주입되지 않습니다 나는 이런 나의 봄 부팅 응용 프로그램에서 resttemplate를 만들었습니다. 그러나, 내 인터셉터에서이 nullpointer 예외를 throw합니다.봄 구름 Resttemplate이 요격

왜 내가 인터셉터에서로드 균형 조정 (리본 사용) 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; 
} 

인터셉터이 같은 봄 부팅 응용 프로그램에 추가됩니다

@Configuration 
public class MyConfigAdapter extends WebMvcConfigurerAdapter { 

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

당신의 인터셉터에 대한 자세한 내용을 제시해주십시오. 답변 할 정보가 충분하지 않습니다. – spencergibb

+0

@spencergibb, 내 코드를 추가했습니다. 내 인터셉터에 새 RestTemplate (로드 균형이없는)을 만들고 서비스 이름 대신 "내 마이크로 서비스 URL 및 포트 번호"를 사용하면 제대로 작동하는지 확인할 수 있습니다. – Jayz

답변

0

당신은 어떻게 @Autowired 작품을 오해. @Bean 메서드 외부에있는 new MyInterceptor() 메서드를 호출하면 자동으로 실행되지 않습니다.

다음과 같은 것을 수행

@Configuration 
public class MyConfigAdapter extends WebMvcConfigurerAdapter { 

    @Autowired 
    MyInterceptor myInterceptor; 

    @Override 
    public void addInterceptors(InterceptorRegistry registry) { 
     registry.addInterceptor(myInterceptor).addPathPatterns("/*"); 
    } 
} 
+0

절대적으로 맞습니다. 봄이 어떻게 작동하는지에 대한 나의 눈을 조금 열었다. 자동 와이어 링 작업을 수행하기 위해 @ 인터셉터에 @Component를 추가해야했습니다. – Jayz

+0

답변을 수락하는 마음입니까? – spencergibb

관련 문제