SpringCloud 多个RestTemplate对象
2023-06-08 11:20 更新
如果您想要一个RestTemplate
而不是负载均衡的,请创建一个RestTemplate
bean并注入它。要访问负载均衡的RestTemplate
,请在创建@Bean
时使用@LoadBalanced
限定符,如以下示例所示:
@Configuration
public class MyConfiguration {
@LoadBalanced
@Bean
RestTemplate loadBalanced() {
return new RestTemplate();
}
@Primary
@Bean
RestTemplate restTemplate() {
return new RestTemplate();
}
}
public class MyClass {
@Autowired
private RestTemplate restTemplate;
@Autowired
@LoadBalanced
private RestTemplate loadBalanced;
public String doOtherStuff() {
return loadBalanced.getForObject("http://stores/stores", String.class);
}
public String doStuff() {
return restTemplate.getForObject("https://example.com", String.class);
}
}
重要
注意,在前面的示例中,在普通的
RestTemplate
声明上使用了@Primary
批注,以消除不合格的@Autowired
注入的歧义。
如果看到诸如
java.lang.IllegalArgumentException: Can not set org.springframework.web.client.RestTemplate field com.my.app.Foo.restTemplate to com.sun.proxy.$Proxy89
之类的错误,请尝试注入RestOperations
或设置spring.aop.proxyTargetClass=true
。
以上内容是否对您有帮助:
更多建议: