服务中存在单独的可控问题

时间:2016-07-21 15:17:13

标签: spring-boot scalability resttemplate netflix-eureka netflix-ribbon

我使用Spring RestTemplate来使用本地环境中的其他服务。

在scalabilty的生产环境中,我想使用像eureka和功能区客户端这样的服务注册表。

我希望将我的代码与eureka和功能区客户端完全分离,以便我可以在本地运行我的服务,而无需为eureka运行单独的服务,使用eureka注册服务以及在期间对eureka进行查找。编排。

我使用了spring profile功能来分离出与本地和生产相关的代码和配置。

我被困在一个地方,我使用RestTemplate来调用其他服务。

我想使用prod env的load balancing rest模板和本地服务调用的普通rest模板。

我很难根据我的环境注入RestTemplate类型。

有人可以用正确的方式帮助我注入RestTemplate,以便我的服务可以在本地运行,并在Prod env中运行时利用服务注册表和功能区客户端,而不会影响代码。

谢谢, 斯

1 个答案:

答案 0 :(得分:0)

Profiles

在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;