±à¼ÍƼö: |
±¾ÎĽâÊÍÁËÒ»ÖÖÔÚ΢·þÎñÖ®¼ä¹²ÏíDTO¶ÔÏóµÄ·½·¨,°üÀ¨£º½«Óò¶ÔÏó·¢²¼ÎªDTO ¡¢Î¢·þÎñ¼ä¹²ÏíDTOµÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚ΢ÐŹ«ÖںŠ¹øÍâµÄ´óÀУ¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
1. ¸ÅÊö
½üЩÄêÀ´£¬Î¢·þÎñ±äµÃÔ½À´Ô½Á÷ÐС£Î¢·þÎñ»ù±¾ÌØÕ÷ÊÇÄ£¿é»¯¡¢¶ÀÁ¢¡¢Ò×ÓÚÀ©Õ¹µÄ¡£ËüÃÇÖ®¼äÐèÒªÐͬ¹¤×÷²¢½»»»Êý¾Ý¡£ÎªÁËʵÏÖÕâÒ»µã£¬ÎÒÃÇ´´½¨ÁËÃûΪ
DTO µÄ¹²ÏíÊý¾Ý´«Êä¶ÔÏó¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«½éÉÜÔÚ΢·þÎñÖ®¼ä¹²ÏíDTOµÄ·½·¨¡£
2. ½«Óò¶ÔÏó·¢²¼ÎªDTO
ʹÓÃ΢·þÎñ¹ÜÀí±íʾӦÓóÌÐòÓòµÄÄ£ÐÍ¡£ÓòÄ£Ð͵ĹØ×¢µãÓë DTO ²»Í¬£¬ÎÒÃǽ«ËüÃÇÓëDAO²ãÖеÄÊý¾ÝÄ£ÐÍ·Ö¿ª¡£
ÕâÑù×öµÄÖ÷ÒªÔÒòÊÇÎÒÃDz»Ïëͨ¹ý·þÎñÏò¿Í»§±©Â¶ÎÒÃÇÁìÓòµÄ¸´ÔÓÐÔ¡£
Ç¡Ç¡Ïà·´£¬ÎÒÃÇͨ¹ý REST API ±©Â¶ DTO Ϊ¿Í»§¶ËÌṩ·þÎñ¡£µ±DTOÔÚÕâЩ·þÎñÖ®¼ä´«µÝʱ£¬ÎÒÃǽ«ËüÃÇת»»ÎªÓò¶ÔÏó¡£
ÉÏÃæµÄ ÃæÏò·þÎñ¼Ü¹¹ ʾÒâÐÔµØÏÔʾÁËDTOµ½Óò¶ÔÏóµÄ×é¼þºÍÁ÷³Ì¡£
3. ΢·þÎñ¼ä¹²ÏíDTO
ÒÔ¿Í»§¶©¹º²úÆ·µÄ¹ý³ÌΪÀý¡£´Ë¹ý³Ì»ùÓÚ Customer-Order Ä£ÐÍ£¬´Ó·þÎñÌåϵ½á¹¹µÄ½Ç¶ÈÀ´¿´¿´Õâ¸ö¹ý³Ì¡£
¼ÙÉè¿Í»§·þÎñ½«ÇëÇóÊý¾Ý·¢Ë͵½¶©µ¥·þÎñ£º
"order":
{ "customerId": 1, "itemId":
"A152"
} |
Customer ºÍ Order ·þÎñʹÓà contracts (ÆõÔ¼)
½øÐÐͨÐÅ¡£contract£¨»òÕßÊÇ·þÎñÇëÇó£©ÒÔJSON¸ñʽÏÔʾ¡£×÷Ϊ Java Ä£ÐÍ£¬OrderDTO
Àà±íʾ¿Í»§·þÎñºÍ¶©µ¥·þÎñÖ®¼äµÄÆõÔ¼£º
public class
OrderDTO {
private int customerId;
private String itemId;
// constructor, getters, setters
} |
3.1. ʹÓÿͻ§¶ËÄ£¿é¹²ÏíDTO
΢·þÎñÐèÒªÀ´×ÔÆäËû·þÎñµÄijЩÐÅÏ¢À´´¦ÀíÈκÎÇëÇó¡£¼ÙÉèÓеÚÈý¸ö΢·þÎñ½ÓÊÕ¶©µ¥¸¶¿îÇëÇó¡£Ó붩µ¥·þÎñ²»Í¬£¬´Ë·þÎñÐèÒª²»Í¬µÄ¿Í»§ÐÅÏ¢£º
public class
CustomerDTO {
private String firstName;
private String lastName;
private String cardNumber;
// constructor, getters, setters
}
|
Èç¹ûÎÒÃÇ»¹Ìí¼ÓÁËËÍ»õ·þÎñ£¬¿Í»§ÐÅÏ¢½«¾ßÓУº
public class
CustomerDTO {
private String firstName;
private String lastName;
private String homeAddress;
private String contactNumber;
// constructor, getters, setters
}
|
Òò´Ë£¬½« CustomerDTO Àà·ÅÔÚ¹²ÏíÄ£¿éÖÐÆð²»µ½Ô¤ÆÚµÄ×÷Óá£ÎªÁ˽â¾öÕâ¸öÎÊÌ⣬ÎÒÃDzÉÓÃÁËÒ»ÖÖ²»Í¬µÄ·½·¨¡£
ÔÚÿ¸ö΢·þÎñÄ£¿éÖУ¬´´½¨Ò»¸ö¿Í»§¶ËÄ£¿é(ÒÀÀµ°ü)£¬²¢ÔÚÆäÅԱߴ´½¨Ò»¸ö·þÎñ¶ËÄ£¿é£º
order-service
|__ order-client
|__ order-server
|
order-client Ä£¿é°üº¬Ò»¸öÓë¿Í»§·þÎñ¹²ÏíµÄDTO¡£Òò´Ë£¬order-clientÄ£¿é¾ßÓÐÒÔϽṹ£º
order-service
©¸©¤©¤order-client
OrderClient.java
OrderClientImpl.java
OrderDTO.java
|
OrderClient ÊÇÒ»¸ö½Ó¿Ú£¬Ëü¶¨ÒåÁË´¦Àí¶©µ¥ÇëÇóµÄorder·½·¨£º
public interface
OrderClient {
OrderResponse order(OrderDTO orderDTO);
}
|
ΪÁËʵÏÖ order ·½·¨£¬ÎÒÃÇʹÓà RestTemplate ¶ÔÏóÏò
order ·þÎñ·¢ËÍPOSTÇëÇó£º
String serviceUrl
= "http://localhost:8002/order-service";
OrderResponse orderResponse = restTemplate.postForObject(serviceUrl
+ "/create",
request, OrderResponse.class);
|
´ËÍ⣬order-clientÄ£¿éÒѾ¿ÉÒÔʹÓÃÁË¡£ËüÏÖÔÚ³ÉΪ customer-service
Ä£¿éµÄÒÀÀµ¿â£º
[INFO] --- maven-dependency-plugin:3.1.2:list
(default-cli) @ customer-service ---
[INFO] The following files have been resolved:
[INFO] com.baeldung.orderservice:order-client:jar:1.0-SNAPSHOT:compile
|
µ±È»£¬Èç¹û order-server Ä£¿éûÓÐÏò order-client
±©Â¶ /create ·þÎñ¶Ëµã£¬ÄÇÒ²ÊDz»ÐеΣ¡
@PostMapping("/create")
public OrderResponse createOrder(@RequestBody
OrderDTO request) |
ÓÉÓÚÕâ¸ö·þÎñ¶Ëµã£¬Customer Service ¿ÉÒÔͨ¹ýÆäorder¿Í»§¶Ë·¢ËͶ©µ¥ÇëÇó¡£Í¨¹ýʹÓÿͻ§¶ËÄ£¿é£¬Î¢·þÎñÒÔ¸ü¼Ó¶ÀÁ¢µÄ·½Ê½Ï໥ͨÐÅ¡£DTOÖеÄÊôÐÔÔÚ¿Í»§¶ËÄ£¿éÖиüС£Òò´Ë£¬Î¥±³ÆõÔ¼½öÏÞÓÚʹÓÃÏàͬ¿Í»§¶ËÄ£¿éµÄ·þÎñ¡£
4. ½áÂÛ
±¾ÎĽâÊÍÁËÒ»ÖÖÔÚ΢·þÎñÖ®¼ä¹²ÏíDTO¶ÔÏóµÄ·½·¨¡£³äÆäÁ¿£¬ÎÒÃÇͨ¹ýÇ©¶©ÌØÊâÆõÔ¼×÷Ϊ΢·þÎñ¿Í»§¶ËÄ£¿é£¨¿â£©µÄÒ»²¿·ÖÀ´ÊµÏÖÕâÒ»µã¡£Í¨¹ýÕâÖÖ·½Ê½£¬ÎÒÃǽ«·þÎñ¿Í»§¶ËÓë°üº¬API×ÊÔ´µÄ·þÎñ¶Ë²¿·Ö·Ö¿ª¡£ÕâÑù×öµÄºÃ´¦ÊÇ£º
·þÎñÖ®¼äûÓÐÈßÓà
Î¥·´ÆõÔ¼½öÏÞÓÚʹÓÃͬһ¿Í»§¶ËµÄ·þÎñ
|