我使用Spring RestTemplate来使用本地环境中的其他服务。
在scalabilty的生产环境中,我想使用像eureka和功能区客户端这样的服务注册表。
我希望将我的代码与eureka和功能区客户端完全分离,以便我可以在本地运行我的服务,而无需为eureka运行单独的服务,使用eureka注册服务以及在期间对eureka进行查找。编排。
我使用了spring profile功能来分离出与本地和生产相关的代码和配置。
我被困在一个地方,我使用RestTemplate来调用其他服务。
我想使用prod env的load balancing rest模板和本地服务调用的普通rest模板。
我很难根据我的环境注入RestTemplate类型。
有人可以用正确的方式帮助我注入RestTemplate,以便我的服务可以在本地运行,并在Prod env中运行时利用服务注册表和功能区客户端,而不会影响代码。
谢谢, 斯
答案 0 :(得分:0)
在RestTemplate Bean上使用@Profile
注释。
示例:
@Configuration
public class Config {
@Profile("local")
@Bean
public RestTemplate restTemplateLocal(){
return new RestTemplate();
}
@Profile("production")
@LoadBalanced
@Bean
public RestTemplate restTemplateProduction(){
return new RestTemplate();
}
}
然后你可以在任何需要的地方自动装配这个bean,并根据活动的Profile
,它将返回normal或LoadBalanced RestTemplate。
@Autowired
private RestTemplate restTemplate;