通过微服务,实现对用户关联订单的CRUD
启用注册、发现都需要对应用作相同的配置,服务提供方也可以是服务消费方
spring:
application:
name: 服务名
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
eureka-service的配置(application.yml)
配置:server:
port: 10086
spring:
application:
name: eureka-server
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
增加
给定user的ID,和订单信息,增加指定用户的订单数据
删除
给定user的ID,和订单信息,删除指定用户的订单数据
user的web 层接口:
@DeleteMapping("/user/{userId}")
public String deleteByUserId(@PathVariable("userId")Long userId){
return orderService.deleteById(userId);
}
user 业务层:
@Autowired
private RestTemplate template;
public User deleteById(Long id) {
String url = "http://orderservice/order/user/"+id;
// 删除操作
template.delete(url);
userMapper.deleteById(id);
return "delete is ok";
}
查询
给定user的ID,查询指定用户的订单数据
user的web 层接口:
@GetMapping("/user/{userId}")
public List<Order> getOrdersByUserId(@PathVariable("userId")Long userId){
return orderService.getAllOrders(userId);
}
user 业务层:
@Autowired
private RestTemplate template;
public User queryById(Long id) {
String url = "http://orderservice/order/user/"+id;
// 指定返回值为订单的集合
ArrayList<Order> object = (ArrayList<Order>)template.getForObject(url, ArrayList.class);
User user = userMapper.findById(id);
user.setOrders(object);
return user;
}
修改
给定user的ID,和订单信息,修改指定用户的订单数据
@LoadBalanced 负载均衡注解,底部由 Ribbon 完成,
Ribbon 有个拦截器会对RestTemplete对象的请求做拦截识别处理,在获取了注册中心的服务之后,将拦截到的请求与之前的服务做对比,
再重新拼接请求路径