【发布时间】:2020-02-23 13:46:30
【问题描述】:
我在 rent-service em> 我在 @FeignClient 的帮助下调用 car-service 的 GET 方法,该方法返回 Car 类的实例。这个Car 类只存在于car-service中。
所以为了在 rent-service @FeignClientProxy 接口的方法中映射这个对象,我创建了一个名为 CarProxy 的类,它具有完全相同的字段和所有内容作为Car 类。而且这个映射工作正常。
我的问题是即使类是两个不同的,这种映射是如何发生的? @FeignClient 或 Jackson 是根据类的字段名称映射这个吗?
是否可以为返回的对象 @FeignClientProxy 方法创建代理类?还是让@Controllermethods 返回HashSet 或HashMap 中的对象而不是使用像Car 这样的自定义类更好?
//Car class Only in Car-management-service
@Entity
@Table(name = "CAR")
public class Car {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "CAR_ID")
private Long carId;
@Column(name = "REG_NUM")
private String regNumber;
@Column(name = "BRAND")
private String brand;
@Column(name = "MODEL")
private String model;
//Getter,Setter,Constructor below
}
//Controller in car-management-service which returns Car object
@RestController
@RequestMapping("/car-service")
public class CarInfoController {
@Autowired
CarService service;
@GetMapping(path = "/getCarInfo/{Id}")
public Car getCarDetails(@PathVariable Long Id) {
if (Id == null)
throw new IllegalArgumentException("Id is Null");
return service.findCarById(Id);
}
}
//FeignClient interface in rent-management-service which calls car-service GET endpoint
@FeignClient(name = "car-management-service", url = "localhost:8100/car-service")
public interface CarManagementServiceProxy {
@GetMapping(path = "/getCarInfo/{Id}")
public CarProxy getCarDetails(@PathVariable("Id") Long Id);
}
//CarProxy class in rent-service which is a clone to Car class in car-service
public class CarProxy {
private Long carId;
private String regNumber;
private String brand;
private String model;
//Getter,Setter,Constructor below
}
【问题讨论】:
标签: rest jackson spring-cloud-feign