javaresttemplate_详解RestTemplate的三种使⽤⽅式
什么是RestTemplate
传统情况下在java代码⾥访问restful服务,⼀般使⽤Apache的HttpClient。不过此种⽅法使⽤起来太过繁琐。spring提供了⼀种简单便捷的模板类来进⾏操作,这就是RestTemplate。
准备
服务端我是⽤的是⼀个普通的API
@RestController
public class ServerController {
@GetMapping("/msg")
public String msg(){
return "this is product' msg";
}
}
第⼀种⽅式
直接使⽤restTemplate,url写死
@Slf4j
杨泽林
@RestController
public class ClientController {
@GetMapping("/getProductMsg")
public String getProductMsg(){
// 1、第⼀种⽅式(直接使⽤restTemplate,url写死)
RestTemplate restTemplate = new RestTemplate();毕业实习证明
String respon = ForObject("localhost:9082/msg",String.class);
猴子王国
log.info("respon={}",respon);
return respon;
}
}
第⼆种⽅式
第⼆种⽅式(利⽤loadBalancerClient通过应⽤名获取url,然后再使⽤restTemplate)
酸菜鱼头汤@Slf4j
@RestController
public class ClientController {
@Autowired
private LoadBalancerClient loadBalancerClient;
@GetMapping("/getProductMsg")
public String getProductMsg(){
//2、第⼆种⽅式(利⽤loadBalancerClient通过应⽤名获取url,然后再使⽤restTemplate)
ServiceInstance rviceInstance = loadBalancerClient.choo("PRODUCT");
键盘的英文String url = String.format("%s:%s",Host(),Port()) + "/msg"; RestTemplate restTemplate = new RestTemplate();
String respon = ForObject(url,String.class);
log.info("respon={}",respon);铁路实习报告
return respon;
}
}
第三种⽅式
第三种⽅式(利⽤@LoadBalanced,可再restTemplate⾥使⽤应⽤名字)
@Component
6s管理标准public class RestTemplateConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
@Slf4j
@RestController
public class ClientController {
@Autowired
购物节private RestTemplate restTemplate;
@GetMapping("/getProductMsg")
public String getProductMsg(){
//3、第三种⽅式(利⽤@LoadBalanced,可再restTemplate⾥使⽤应⽤名字)
String respon = ForObject("PRODUCT/msg",String.class);
log.info("respon={}",respon);
return respon;
}
}
github项⽬
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持脚本之家。