[英]Spring Boot Rest Template Proxy In Only Few Classes
我的團隊正在使用 RestTemplate 進行外部 API 調用。 我們需要將 RestTemplate 配置為僅在某些類中使用代理。 在所有其他類中,我們希望避免使用代理。 我的第一個想法是繼續使用不需要代理的@Autowire RestTemplate,並在所有需要的類中執行以下操作。 我對這個解決方案不滿意,因為它看起來很容易@Autowire RestTemplate 很干凈,但必須在每個需要它的類中鍵入以下代理配置的 RestTemplate。 有沒有更清潔的替代品?
需要代理
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("http.proxy.fmr.com", 8000)));
this.pricingRestTemplate = new RestTemplate(requestFactory);
配置類中的新 bean
@Bean @Primary public RestTemplate restTemplate() { return new RestTemplate(); } @Bean(name = "proxyRestTemplate") public RestTemplate proxyRestTemplate() { SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("http.proxy.com", 8000)); requestFactory.setProxy(proxy); return new RestTemplate(requestFactory); }
然后我自動裝配並在需要使用代理的地方使用了@Qualifier 注釋
// no proxy @Autowired RestTemplate oauth2RestTemplate; // yes proxy @Autowired @Qualifier("proxyRestTemplate") RestTemplate proxyRestTemplate;
在類的構造函數中注入RestTemplate
(或者更好的RestOperations
)(無論如何這是最佳實踐),對於需要代理配置的類,使用@Bean
配置方法來實例化 bean 並傳遞特定的代理模板。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.