Rest微服务构建
服务提供方
通过controller层向外暴露服务
// 提供Restful服务
@RestController
public class DeptController {
@Autowired
private DeptService deptService;//具体业务逻辑
@PostMapping("/dept/add")
public boolean addDept(@RequestBody Dept dept) {
return deptService.addDept(dept);
}
@GetMapping("/dept/get/{id}")
public Dept get(@PathVariable("id") Long id) {
return deptService.queryById(id);
}
@GetMapping("/dept/list")
public List<Dept> queryAll() {
return deptService.queryAll();
}
}
服务消费方
通过RestTemplate调用提供者的服务
@RestController
public class DeptConsumerController {
// 理解:消费者,不应该有service层
// RestTemplate ... 供我们直接调用就可以了!注册到Spring中
// (url,实体:map,Class<T> responseType)
@Autowired
private RestTemplate restTemplate;//提供多种便捷访问远程http服务的方法,简单restful服务模板
private static final String REST_URL_PREFIX = "http://127.0.0.1:8001";//服务提供方地址
@RequestMapping("/consumer/dept/add")
public boolean add(Dept dept) {
return restTemplate.postForObject(REST_URL_PREFIX + "/dept/add", dept, Boolean.class);
}
// http://127.0.0.1:8001/dept/list
@RequestMapping("/consumer/dept/get/{id}")
public Dept get(@PathVariable("id")Long id) {
return restTemplate.getForObject(REST_URL_PREFIX + "/dept/get/" + id, Dept.class);
}
@RequestMapping("/consumer/dept/list")
public List<Dept> list() {
return restTemplate.getForObject(REST_URL_PREFIX + "/dept/list", List.class);
}
}
RestTemplate配置类
@Configuration
public class ConfigBean {//@Configuration -- spring applicationContext.xml
@Bean
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}

浙公网安备 33010602011771号