2
스프링 부트 1.3.3을 사용하고 있습니다. 나머지 템플리트를 가로 채고 싶지만 가로 챌 수 있지만 application.properties에 액세스 할 수 없습니다. 항상 null을 반환합니다. .스프링 부트가 ClientHttpRequestInterceptor의 @Value에 액세스 할 수 없습니다.
package com.sample.filter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
public class HeaderInterceptor implements ClientHttpRequestInterceptor{
private static final String CLIENT_HEADER = "x-client";
@Value("${clientHeader}")
private String ClientHeader;
@Override
public ClientHttpResponse intercept(HttpRequest httpRequest, byte[] body, ClientHttpRequestExecution execution) throws IOException {
HttpHeaders headers = httpRequest.getHeaders();
headers.add(CLIENT_HEADER, ClientHeader);
return execution.execute(httpRequest, body);
}
}
난 항상 널 (null)로 "clientHeader" 키를 얻고있다.
어떤 도움을 받아야합니다.
당신은 스스로 인터셉터를 제작하지 않습니까? ('new HeaderInterceptor()')? –
예. 인터셉터를 만들고 있는데 restTemplate setInterceptors 메소드에이 인터셉터를 추가하고 있습니다. 올바르게 작동합니다. @Value를 사용하여 값을 동적으로 전달할 수 있는지 테스트하려고하지만 실패합니다. – VelNaga
스프링 (@Component)에 의해 관리되도록 HeaderInterceptor에 주석을 추가 했더라도 ritesh는 만족 스럽습니다. 그러나 new 연산자를 사용하면 인스턴스화 된 HeaderInterceptor가 스프링 관리가 아니므로 컨텍스트 값에 액세스 할 수 없습니다. 인터셉터는 흐름을 멈추게하는 아무 것도 없었기 때문에 작동합니다 (단지 clientHeader 속성이 null이 됨). HeaderInterceptor를 Autowire하고 restTemplate의 setInterceptor 메소드에서 autowired 속성을 사용하십시오. 이 값은 동적으로 전달 될 수 있습니다. –