簡體   English   中英

Spring Boot Rest 模板代理只有幾個類

[英]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);

***解決方案***
為 rest 模板創建了 2 個 bean 並將其中一個聲明為主要(需要避免錯誤)

配置類中的新 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM