2 つのソリューション:
解決策 1
AA 3.0 以降 (まだスナップショット)、アノテーションでインターセプターフィールドを使用し、各リクエストにヘッダーを設定するカスタムを実装できます。@Rest
ClientHttpRequestInterceptor
public class HeadersRequestInterceptor implements ClientHttpRequestInterceptor {
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
request.getHeaders().set("Connection", "Close");
return execution.execute(request, body);
}
}
解決策 2
AA <= 2.7.1 では@EBean
、Rest インターフェイスが注入されたアノテーション付きクラスを作成する必要があります。他のクラスに注入されたすべての Rest インターフェイスをこの Bean に置き換えます。この新しい Bean で@AfterInject
、インスタンスを取得しRestTemplate
、ソリューション 1 のインターセプターを構成するメソッドを作成します。
RestClient.java :
@Rest(...)
public interface RestClient {
@Post("base/setItem.php")
Item setItem(Protocol protocol);
RestTemplate getRestTemplate();
}
RestClientProxy.java :
@EBean
public class RestClientProxy {
@RestService
RestClient restClient;
@AfterInject
void init() {
RestTemplate restTemplate = restClient.getRestTemplate();
List<ClientHttpRequestInterceptor> interceptors = restTemplate.getInterceptors();
interceptors.add(new HeadersRequestInterceptor());
}
}