RestTemplate

基于RestTemplate对象,可以进行远端服务调用 例如sca-consumer调用sca-provider

1.在配置类中配置RestTemplate:

@Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

 2.在ConsumerController中,进行远端调用ProviderController:

@RestController
public class ConsumerController {
    //通过此对象进行远端服务调用
    @Autowired
    private RestTemplate restTemplate;

    /**
     *当浏览器访问这个方法时
     * 在此方法内部 基于RestTemplate对象 进行远端方法调用
     * */
    @GetMapping("/consumer/doRestEcho1")
    public String doRestEcho1() {
        //调用的远端服务的url
        String url = "http://localhost:8085/provider/echo/abcd";
        return restTemplate.getForObject(url,
                String.class//远端url响应数据类型
                );

    }
}

ProviderController远端服务:

@RestController
public class ProviderController {

    @Value("${server.port:8080}")
    private String server;

    @GetMapping("/provider/echo/{msg}")
    public String doRestEcho1(@PathVariable String msg) throws InterruptedException {
        return server + "..." + msg;
    }
}

@LoadBananced

使用@LoadBalanced描述RestTemplate对象时,系统底层在基于RestTemplate进行远端服务调用时,会被一个拦截器拦截,然后进行功能增强

增强是指:基于loadBalancerClint对象进行服务实例获取。这个服务实例获取的过程,会自动采用负载均衡

@Bean//bean的名字默认是方法名
@LoadBalanced
public RestTemplate loadBalancedRestTemplate() {
     return new RestTemplate();
}

ConsumerController:

@Autowired
private RestTemplate loadBalancedRestTemplate;

@GetMapping("/consumer/doRestEcho3")
public String doRestEcho3() {
    String url = String.format("http://%s/provider/echo/abcd","sca-provider");
    return loadBalancedRestTemplate.getForObject(url,String.class );
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值