RestTemplate硬编码的使用
RestTemplate是由Spring框架提供的一个可用于应用中调用rest服务的类它简化了与http服务的通信方式,统一了RESTFul的标准,封装了http连接,我们只需要传入url及其返回值类型即可。相较于之前常用的HttpClient,RestTemplate是一种更为优雅的调用RESTFul服务的方式。
因为RestTemplate是Spirng框架提供的所以只要是一个Springboot项目就不用考虑导包的问题,这些都是提供好的。 但是Spring并没有将其加入SpringBean容器中,需要我们手动加入,因为我们首先创建一个Springboot配置类,再在配置类中将我们的RestTemlate注册到Bean容器中。
1.要使用这个硬编码的形式
@LoadBalanced // 这个是开启负载均衡 @Bean // 让spring容器管理这个对象 public RestTemplate restTemplate(){ // 这个对象spring并没有加入管理 return new RestTemplate(); }
-
在消费模块中使用
@Autowired // 导入这个对象 private RestTemplate restTemplate; @Override public Map<String,Object> addWork(WorkOrders workOrders) { String url = "http://guo-project/project/showList"; // 写生产者的请求地址 List<ProjectTeams> projectList = restTemplate.getForObject(url, List.class); // 在这里要注意下 Map<String,Object> map = new HashMap<>(); map.put("project",projectList); int flag = workMapper.addWork(workOrders); map.put("数据添加",flag == 0 ? "false":"true" ); return map; }
注意事项:生产者在这里调用回来的数据,不知道是idea版本的问题还是别的问题,返回来的数据是json格式的数据 那我们就要将json的数据转为java数据 在这个模块中导入json的依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.24</version> </dependency> String url = "http://guo-project/project/showList"; // 获取全部的项目 List pro = restTemplate.getForObject(url, List.class); // 将数据转化成集合 List<ProjectTeams> projectTeams = JSON.parseArray(JSON.toJSONString(pro),ProjectTeams.class); // 两个参数,json转化的数据,另一个是要转化的类型
总结:继续加油