±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚÍøÂ磬±¾Æª·Ö±ð´Ó΢·þÎñģʽÏÂÈçºÎ¿ªÕ¹½Ó¿Ú×Ô¶¯»¯²âÊÔ£¬ÆõÔ¼²âÊԵļÛÖµÒÔ¼°ÈçºÎ¿ªÕ¹ÆõÔ¼²âÊԽǶȽøÐÐÁ˽éÉÜ¡£
|
|
±³¾°
ÈÕ³£¿ª·¢¹ý³ÌÖУ¬ÏîÄ¿µÄ½Ó¿Úͨ³£ÓÉ·þÎñÌṩ·½Ô¼¶¨ºÍÌṩ£¬Î¢·þÎñģʽϽӿڱ»¶à¸öÏû·ÑÕßµ÷ÓøüÊdz£Ì¬£¬ÄÇôÌṩ·½½Ó¿ÚµÄ±ä¸üÈçºÎ¿ìËÙ¡¢¸ßЧ¡¢ÎÞÒÅ©µÄ֪ͨ¸øÏû·ÑÕßÄØ£¿ÁíÍ⣬µ±Ò»¸öserviceͬʱ±»¶à¸öʹÓÃÕßµ÷Óã¬ÈçºÎ±£Ö¤¶ÔserviceµÄÐ޸ĿÉÒÔÈÃÆäËüËùÓÐʹÓÃÕßÔì³ÉµÄÓ°Ïì¶¼Äܱ»¸ÐÖªµ½£¿ÕâЩÎÊÌâÆõÔ¼²âÊÔ¿ÉÒÔ¸øÄã´ð°¸¡£ÁíÍ⣬΢·þÎñģʽÏ£¬½Ó¿Ú²âÊÔÊǷdz£ÖØÒªµÄ²âÊÔÊֶΣ¬ËüÔÚʵ¼ÊµÄÏîÄ¿ÖаïÖúÑé֤΢·þÎñÖ®¼äµÄÐͬºÍ½»»¥£¬´ó·ù½µµÍ²âÊԳɱ¾ºÍÌá¸ß²âÊÔЧÂÊ·½ÃæÌṩÁ˺ܴó°ïÖú£¬¿ÉÒÔ˵½Ó¿Ú²âÊÔÊÇÒµÎñ¹¦ÄܲâÊÔǰÖõÄÖúÍÆÆ÷¡£Òò´Ë£¬ÕâÀï¶ÔÕâÁ½ÖÖ²âÊÔÊֶνøÐнéÉÜ¡£
½Ó¿Ú²âÊÔºÍÆõÔ¼²âÊÔËù´¦µÄ½×¶Î
ÔÚʵ¼ÊµÄ¹¤×÷ÖУ¬½áºÏËæÐи¶µÄʵ¼ÊÇé¿öÎÒÃǶÔ×Ô¶¯»¯²âÊÔ½ð×ÖËþÔÀí½øÐÐÁ˶¨ÖÆ£¬¼ÓÈëÆõÔ¼×Ô¶¯»¯²âÊÔÄÚÈÝ£¬ÐγÉÈçÏÂаæ×Ô¶¯»¯²âÊÔ½ð×ÖËþ½á¹¹¡£

ÓÉͼ¿ÉÖª£¬Ò»¸öÏîÄ¿µÄ²âÊÔ¹ý³Ì£¬´ÓÏîÄ¿ÍÆ½øµÄά¶È£¬Ê×ÏȽøÐе¥Ôª²âÊÔ£¬Æä´Î½Ó¿Ú×Ô¶¯»¯²âÊÔ¡¢ÆõÔ¼²âÊÔ£¬×îºóUI×Ô¶¯»¯²âÊÔºÍÊÖ¹¤²âÊÔ¡£
΢·þÎñģʽÏÂÈçºÎ¿ªÕ¹½Ó¿Ú²âÊÔ
½Ó¿Ú²âÊÔÊôÓÚ¼¯³É²âÊÔ·¶³ë£¬ËûÊǵ¥Ôª²âÊÔµÄÀ©Õ¹ºÍÑÓÐø¡£ËüÖ÷ÒªµÄ¹Ø×¢µãÊÇÄÚ²¿½Ó¿Ú¹¦ÄÜʵÏÖÊÇ·ñÍêÕû£¬±ÈÈç˵ÄÚ²¿Âß¼ÊDz»ÊÇÕý³££¬Òì³£´¦ÀíÊDz»ÊÇÕýÈ·¡£ËüÊǵ¥Ôª²âÊÔºÍÆõÔ¼²âÊԵĹý¶É½×¶Î£¬ËüÊÇÏîÄ¿µ¥¸ö´úÂëÂß¼×îÖÕ´®ÁªÐγÉÓмÛÖµÒµÎñÂß¼µÄÇÅÁº¡£Òò´Ë£¬Æä×÷ÓþÙ×ãÇáÖØ¡£ËæÐи¶¿ªÕ¹½Ó¿Ú²âÊÔ£¬²ÉÓõÄ˼·Êǹ淶ºÍ·½·¨ÏÈÐУ¬Æä´ÎÊǹ¤¾ßÑ¡Ôñ¡¢ÈËÔ±Åàѵ£¬È»ºóÊÇʵʩºÍ¹ý³ÌÓÅ»¯£¬×îºó³£Ì¬»¯³ÖÐøÌáЧºÍÖÊÁ¿±£Ö¤µÄ¹ý³Ì¡£
½Ó¿Ú²âÊԹ淶»¯ÒªÇó
½Ó¿Ú²âÊÔµÄÖÊÁ¿±£Ö¤ºÍ²âÊÔ¹ý³ÌµÄÁ÷³Ì»¯ÐèҪͨ¹ý¹æ·¶ºÍ·½·¨½øÐÐÖ¸µ¼ºÍÔ¼Êø¡£ÎÒÃǶ¨ÖÆÁËÈçÏÂÒªÇ󣨲¿·ÖÄÚÈÝ£©£º
1.ÐèÇó´æÔÚÐÂÔö½Ó¿Ú»òÕß½Ó¿Ú±ä¸üʱ£¬ÒªÇó½øÐÐÐÂÔö½Ó¿Ú²âÊÔ°¸ÀýµÄ±àд»ò´æÁ¿½Ó¿Ú°¸ÀýµÄά»¤£»
2.ÐèÇóÉæ¼°µ½µÄ´æÁ¿½Ó¿ÚÐèÒª½øÐлعé²âÊÔ£»
3.½Ó¿Ú²âÊÔ¸²¸ÇÂÊÒªÇó´ïµ½100%£»
4.ÐèÇó²âÊÔ½áÊøÇ°ÖÁÉÙ½øÐÐÒ»Âֽӿڻعé²âÊÔ£¬Çһعéͨ¹ýÂÊ´ïµ½100%
²âÊÔÁ÷³Ì¹æ·¶Éæ¼°´ÓÐèÇóÌá³ö¡¢½Å±¾±àд¡¢Ö´Ðе½²âÊÔ±¨¸æµÄ¸÷¸ö¹ý³Ì¡£
1.½Ó¿ÚÎĵµ¡£½Ó¿ÚÎĵµÊǽӿڲâÊÔ°¸ÀýÉè¼ÆµÄÒÀ¾Ý£¬½Ó¿ÚÎĵµµÄÈ«ÃæÐÔºÍ׼ȷÐÔ¾ö¶¨Á˽ӿڲâÊÔ·¶Î§µÄÈ«ÃæÐԺͽӿڲâÊÔ½á¹ûµÄÕýÈ·ÐÔ¡¢ÓÐЧÐÔ¡£ËæÐи¶²ÉÓÃswagger½øÐнӿÚÎĵµ¹ÜÀí¡£
2.½Ó¿ÚÓÃÀýÉè¼Æ¡£¸ù¾Ý½Ó¿ÚÎĵµÉè¼Æ½Ó¿Ú²âÊÔ°¸Àý£¬½Ó¿Ú²âÊÔ°¸Àýͨ¹ý½Ó¿Ú²âÊÔÆ½Ì¨½øÐбàд£¬ÇÒÐèÒªÂú×ã²»ÖØ²»Â©ÔÔò¡£
3.½Ó¿ÚÓÃÀýÆÀÉ󡣸ù¾ÝÏîĿʵ¼ÊÇé¿ö£¬½Ó¿Ú²âÊÔ°¸Àý±àдÍê³Éºó£¬Ðè×éÖ¯Ïà¹Ø¸ÉϵÈ˽øÐа¸ÀýÆÀÉ󣬼Ǽ²¢·¢ËÍ»áÒé¼ÍÒª¡£
4.½Ó¿ÚÓÃÀýÖ´ÐС£ÐèÇó²âÊÔ½áÊøÇ°½Ó¿Ú²âÊÔ°¸ÀýÖÁÉÙÔÚ²âÊÔ»·¾³ÖÐÖ´ÐÐÁËÒ»´Î»Ø¹é²âÊÔ£¬ÒªÇó°¸ÀýÖ´ÐÐͨ¹ýÂÊ´ïµ½100%
5.ȱÏݹÜÀíºÍ²âÊÔ±¨¸æ¡£
6.½Å±¾ÄÉÈë»Ø¹éÌåϵ£¬¶¨Ê±»Ø¹é£¬³ÖÐø±£ÕϽӿڵÄÖÊÁ¿£¬ÒÔ¼°½Ó¿ÚÖÊÁ¿µÄ³ÖÐøºÍ¼°Ê±·´À¡¡£
½Å±¾ÃüÃû¹æ·¶ºÍ±àд¹æ·¶ÈçÏ£¨²¿·ÖÄÚÈÝ£©£º
1.½Ó¿ÚÃüÃûÒªÇ󣺲ÉÓá°½Ó¿ÚÃû³Æ_½Ó¿ÚÃèÊö¡±½øÐÐÃüÃû£¬ÓÃÓÚ¶¨ÒåΨһ½Ó¿Ú¡£
2.·½·¨ÃüÃûÒªÇ󣺲ÉÓá°·½·¨Ãû_ÃèÊö¡±½øÐÐÃüÃû£¬ÓÃÓÚ¶¨ÒåΨһ·½·¨¡£
3.°¸ÀýÃüÃûÒªÇ󣺲ÉÓá°ÐòºÅ_³¡¾°²Ù×÷_ÆÚÍû½á¹û¡±½øÐÐÃüÃû£¬ÓÃÓÚ¶¨ÒåΨһ°¸Àý¡£
4.¡¾Ç¿ÖÆ¡¿Ã¿¸ö½Ó¿Ú²âÊÔ°¸Àý¶¼±ØÐë°üº¬ÖÁÉÙÒ»¸ö¶ÏÑÔ£»
5.¡¾Ç¿ÖÆ¡¿¶ÔÓÚjson¸ñʽµÄ±¨ÎÄ£¬½Ó¿ÚÈë²ÎºÍ¶ÏÑÔÏìÓ¦µÄÔ¤ÆÚÖµÐèҪʹÓÃÑϸñµÄjson¸ñʽ£»
6.¡¾Ç¿ÖÆ¡¿swagger½Å±¾µ¼Èëµ½½Ó¿Ú²âÊÔÆ½Ì¨Ê±£¬ÐèÒªµ¼Èë.jsonÎļþ£¬ÇÒÎļþÄÚÈÝΪÎÞBOMµÄUTF-8±àÂ룻
7.¡¾Ç¿ÖÆ¡¿Êý¾Ý³õʼ»¯ºÍ¶ÏÑÔµÄsql±ØÐë´øwhereÌõ¼þ£¬ÇÒÄÜΨһ¶¨Î»µ½ÆÚÍûµÄÊý¾Ý£»
8.¡¾Ç¿ÖÆ¡¿Êý¾Ý¿â»ØÍ˵Äsql±ØÐë´øwhereÌõ¼þ£¬ÇÒÄÜΨһ¶¨Î»µ½ÐèÒª»ØÍ˵ÄÊý¾Ý£»
9.¡¾Ç¿ÖÆ¡¿Ó°Ï칫¹²±í£¨È磺T_BAP_CDE_BNK±í£©»òÕ߯äËû×éÊý¾Ý¿â±í£¨È磺×ʽð×飩µÄsql£¬ÔÚÊý¾Ý³õʼ»¯¡¢»ØÍË¡¢½Ó¿ÚÓ°ÏìµÄÊý¾Ý»ØÍË¡¢¶ÏÑÔ»ØÍËʱ±ØÐëÑϸñÉó²é£»
10.¡¾Ç¿ÖÆ¡¿Êý¾Ý¿â¶ÏÑÔsqlÖеÄwhereÌõ¼þµÄÖ÷¼ü×éºÏÐèÒª·Åµ½Ç°Ã棬ÓÃÓÚ¶ÏÑÔʧ°Üʱ¿ìËÙ¶¨Î»ÎÊÌ⣻
½Ó¿Ú²âÊÔÓÃÀýÉè¼ÆÒªÇó
ΪÁ˱£Ö¤½Ó¿ÚµÄÖÊÁ¿£¬ÐèÒª½øÐÐÈ«ÃæµÄ½Ó¿Ú²âÊÔ£¬Òò´ËÔÚÉæ¼°½Ó¿Ú²âÊÔÓÃÀýʱÐèÒªÒÀÀµ·½·¨£¬Òò´ËÎÒÃÇ×ܽáÁ˽ӿڲâÊÔÓÃÀýµÄÉè¼ÆÒªÇó£¬ÈçÏÂͼËùʾ¡£

½Ó¿Ú²âÊÔ¹¤¾ß
½Ó¿Ú²âÊÔ¹ý³ÌÌáЧ¡¢²âÊÔ¹ý³Ì×Ô¶¯»¯ÐèÒªÒÀÀµ×Ô¶¯»¯²âÊÔ¹¤¾ß£¬ÎäÆ÷²»ºÃºÜÄÑ´òʤÕÌ¡£¾¹ýµ÷ÑУ¬ÊÐÃæÉϺܶà½Ó¿Ú×Ô¶¯»¯²âÊÔ¹¤¾ß¾ùÎÞ·¨Âú×ãËùÓеIJâÊÔÒªÇó£¬Òò´ËÎÒÃÇ×ÔÑÐÁ˽ӿÚ×Ô¶¯»¯²âÊÔÆ½Ì¨¡£×Ô¶¯»¯²âÊÔÆ½Ì¨¾ßÓÐÈçÏÂÄÜÁ¦£º
1.°¸Àý×Ô¶¯Éú³É¡£http/https½Ó¿Ú°¸Àý×Ô¶¯»¯Éú³ÉºÍµ¼Èë¡£
2.²âÊÔ¹ý³Ì¼¯ÖпÉÊÓ»¯¹ÜÀí¡£Í¨¹ý½«×Ô¶¯»¯²âÊÔ¹ý³Ìweb»¯ÊµÏÖÁË×Ô¶¯»¯²âÊԼƻ®¡¢×Ô¶¯»¯²âÊÔÓÃÀý±àд¡¢×Ô¶¯»¯²âÊÔÓÃÀýÖ´ÐС¢×Ô¶¯»¯²âÊÔÓÃÀý¹ÜÀíºÍ×Ô¶¯»¯²âÊÔ±¨¸æ¹ÜÀí¸÷¸ö¹ý³ÌµÄ¿ÉÊÓ»¯¡£
3.Ä£ÄâÐÔÄܳ¡¾°¡£×Ô¶¯»¯²âÊÔʵÏÖÁËͨ¹ý½Ó¿Ú°¸ÀýÄ£ÄâÐÔÄܲâÊÔ³¡¾°µÄÄÜÁ¦¡£Í¨¹ýʹÓÃÆ½Ì¨ÖÐÌṩµÄ½Ó¿Ú°¸Àý£¬½øÐв¢ÐÐÖ´ÐÐÄ£ÄâÐÔÄܳ¡¾°¡£
4.¶àÐÒé¶à±¨ÎÄÀàÐÍÖ§³Ö¡£Ö§³Öhttp/httpsÐÒé¡¢dubboÐÒé¡¢socketÐÒé¡¢rabbitMQÐÒéµÈÐÒéµÄ×Ô¶¯»¯²âÊÔ£¬²¢Ö§³Ö¶ÔÐÒéµÄÀ©Õ¹¡£Í¬Ê±Ö§³Öxml¡¢json¡¢sop¡¢8583µÈ¶àÖÖ±¨ÎÄÀàÐÍÒÔ¼°±¨ÎÄÀàÐ͵ÄÀ©Õ¹¡£
5.²âÊÔ×ʲúÓÐЧ»ýÀÛ¡£
6.×Ô¶¯»¯µ÷¶ÈÖ´ÐкÍÓʼþ·¢ËÍ¡£×Ô¶¯»¯²âÊÔÖ´ÐÐͨ¹ý¶¨Ê±¶Ô°¸Àý½øÐе÷¶ÈÖ´ÐУ¬¿É¶ÔÖ¸¶¨µÄ¹¹½¨°æ±¾¶ÔÓ¦µÄ°¸Àý½øÐÐ×Ô¶¯»¯µÄ·ÖÅú¡¢¶¨Ê±µ÷¶ÈÖ´Ðв¢Óʼþ·¢ËͲâÊÔ±¨¸æ¡£
7.ϵͳÖÊÁ¿µÄ¿ÉÊÓ»¯·´À¡¡£Í¨¹ý¶Ô×Ô¶¯»¯°¸ÀýµÄÖ´Ðнá¹ûͳ¼Æ£¬·ÖÎö³öϵͳµÄÖÊÁ¿Ç÷ÊÆ£¬×öµ½ÏµÍ³ÖÊÁ¿µÄ³ÖÐø»¯·´À¡¡£Í¨¹ý¸ùÒò·ÖÎö£¬Í³¼ÆÏµÍ³ÎÊÌâµÄ¸ù±¾ÔÒòµÄ±ÈÀý£¬¸üÓÐÕë¶ÔÐԵĽâ¾öÖÊÁ¿ÎÊÌâ¡£

ͨ¹ý½Ó¿Ú²âÊÔ³ÖÐøÔËÐÐ1Äê¶àµÄ³ÖÐøÔËÓª£¬ËæÐи¶ºËÐÄÒµÎñ½Ó¿Ú»ù±¾ÊµÏÖ½Ó¿Ú²âÊÔÓÃÀýÈ«¸²¸Ç£¬ÇÒ¾ùÄÉÈëµ½¶¨ÆÚ»Ø¹é¹ý³Ì£¬³ÖÐøÎª½Ó¿ÚµÄÖÊÁ¿±£¼Ý»¤º½¡£
΢·þÎñģʽÏÂÈçºÎ¿ªÕ¹ÆõÔ¼²âÊÔ
ÆõÔ¼²âÊԵļÛÖµ
ÆõÔ¼²âÊÔ·ÖÁ½ÖÖÀàÐÍ£¬Ò»ÖÖÊÇÏû·ÑÕßÇý¶¯£¬Ò»ÖÖÊÇÌṩÕßÇý¶¯¡£ÆäÖÐ×î³£Óõģ¬ÊÇÏû·ÑÕßÇý¶¯µÄÆõÔ¼²âÊÔ£¨Consumer-Driven
Contract Test£¬¼ò³Æ CDC£©¡£ºËÐÄ˼ÏëÊÇ´ÓÏû·ÑÕßÒµÎñʵÏֵĽǶȳö·¢£¬ÓÉÏû·ÑÕ߶˶¨ÒåÐèÒªµÄÊý¾Ý¸ñʽÒÔ¼°½»»¥Ï¸½Ú£¬Éú³ÉÒ»·ÝÆõÔ¼Îļþ¡£È»ºóÉú²úÕ߸ù¾ÝÆõÔ¼ÎļþÀ´ÊµÏÖ×Ô¼ºµÄÂß¼£¬²¢ÔÚ³ÖÐø¼¯³É»·¾³ÖгÖÐøÑéÖ¤¸ÃʵÏÖ½á¹ûÊÇ·ñÕýÈ·¡£¶ÔÓÚ»ùÓÚRestful
APIµÄ΢·þÎñÀ´Ëµ£¬ËüµÄÆõÔ¼¾ÍÊÇÖ¸ API µÄÇëÇóºÍÏìÓ¦µÄ¹æÔò¡£ ÈçÏÂͼËùʾ£º

¶ÔÓÚÇëÇ󣬰üÀ¨ÇëÇó URL ¼°²ÎÊý£¬ÇëÇóÍ·£¬ÇëÇóÄÚÈݵȣ»
¶ÔÓÚÏìÓ¦£¬°üÀ¨×´Ì¬Â룬ÏìӦͷ£¬ÏìÓ¦ÄÚÈݵȡ£
¶ÔÓÚÔªÊý¾Ý£¬Ö¸¶ÔÏû·ÑÕßÓëÌṩÕß¼äÒ»´ÎÐ×÷¹ý³ÌµÄÃèÊö¡£Æ©ÈçÏû·ÑÕß/ÌṩÕßµÄÃû³Æ¡¢ÉÏÏÂÎļ°³¡¾°ÃèÊöµÈ¡£
ÄÇôÆõÔ¼²âÊÔÄܸøÎ¢·þÎñ´øÀ´Ê²Ã´¼ÛֵĨ£¿ÎÄÕ¿ªÍ·ÒѾÌáµ½ÁËÆõÔ¼²âÊÔµÄÒ»²¿·Ö¼ÛÖµ£¬¼´½Ó¿Ú±ä¸ü¿ìËÙ֪ͨ£¬serviseÐ޸ĵĿìËÙ¸ÐÖª¡£³ý´ËÖ®Í⣬Ëü»¹´øÀ´ÏÂÁмÛÖµ£º
1.½µµÍ·þÎñ¼¯³ÉµÄÄѶȡ£°Ñ·þÎñ¼¯³ÉÕâ¸ö¹ý³Ì·Ö½â³ÉÁ˸üϸµÄµ¥Ôª²âÊԺͽӿڲâÊÔ£¬Ëü´ÓÏû·ÑÕßµÄÐèÇóΪ³ö·¢µã£¬°ÑÏû·ÑÕßµÄÐèÇó×÷Ϊ²âÊÔÓÃÀýÇý¶¯ÊµÏÖÒ»·ÝÆõÔ¼£¬È»ºóÑéÖ¤ÌṩÕ߶˵ŦÄÜ¡£
2.¿ª·¢²¢ÐУ¬Ìá¸ß¿ª·¢Ð§ÂÊ¡£ÆõÔ¼¸ôÀëÁËÏû·ÑÕߺÍÌṩÕߣ¬Ë«·½¿ÉÒÔ²¢ÐпªÕ¹¹¤×÷£¬¿ª·¢¹ý³ÌÖоÍÀûÓÃÆõÔ¼½øÐÐÔ¤¼¯³É²âÊÔ£¬²»Óõȵ½Áªµ÷ÔÙÀ´¼¯³Éµ÷ͨ½Ó¿Ú£¬Ò»µ©³ÉÊ죬ÔÚ±£Ö¤ÖÊÁ¿µÄǰÌáÏ£¬Áªµ÷µÄ³É±¾¿ÉÒÔ¼õµÍµ½¼¸ºõΪ0¡£
3.È·±£±ä¶¯µÄ°²È«ÐÔºÍ׼ȷÐÔ¡£Ö»ÒªÓб仯£¬ÆõÔ¼²âÊÔ¼´¿ÉµÚһʱ¼ä·¢ÏÖ£¬±£Ö¤°²È«ºÍ¶Ô½ÓµÄ׼ȷÐÔ¡£
4.×÷ΪMock serverΪÏû·ÑÕßÌṩMock·þÎñ¡£¼¯³É²âÊÔΪ·þÎñÕßÌṩ

΢·þÎñÏÂÈçºÎ¿ªÕ¹ÆõÔ¼²âÊÔ
ËæÐи¶²ÉÓÃÔÚSpring Cloud Contract¿ªÕ¹ÆõÔ¼²âÊÔ¡£ÆäºËÐÄÁ÷³Ì°üÀ¨2²½£º
1.¶ÔÏû·ÑÕßµÄÒµÎñÂß¼½øÐÐÑé֤ʱ£¬ÏÈ¶ÔÆäÆÚÍûµÄÏìÓ¦×öÄ£ÄâÌṩÕߣ¨Mock£©£»²¢½«ÇëÇó£¨Ïû·ÑÕߣ©-ÏìÓ¦£¨»ùÓÚÄ£ÄâÌṩÕߣ©µÄÐ×÷¹ý³Ì£¬¼Ç¼ΪÆõÔ¼£»
2.ͨ¹ýÆõÔ¼£¬¶ÔÌṩÕß½øÐлطţ¬±£Ö¤ÌṩÕßËùÌṩµÄÄÚÈÝÂú×ãÏû·ÑÕߵįÚÍû¡£
ÏÂÃæÓÃÒ»¸ö¼òµ¥µÄÀý×Ó˵Ã÷Éè¼ÆÆõÔ¼²âÊԵķ½·¨¡£Õâ¸öÀý×ÓÖУ¬Ò»¸ö΢·þÎñÌṩÁËÒ»¸ö°üº¬Èý¸ö×ֶΣ¨¡°IP¡±¡¢¡°name¡±ºÍ¡°password¡±£©µÄ×ÊÔ´£¬¹©Èý¸öÏû·ÑÕß΢·þÎñʹÓá£ÕâÈý¸ö΢·þÎñ·Ö±ðʹÓÃÕâ¸ö×ÊÔ´ÖеIJ»Í¬²¿·Ö¡£Ïû·ÑÕß
A ʹÓÃÆäÖÐµÄ IP ºÍ name ÕâÁ½¸ö×ֶΡ£Òò´Ë£¬²âÊԽű¾Öн«Ö»ÑéÖ¤À´×ÔÌṩÕßµÄ×ÊÔ´ÖÐÊÇ·ñÕýÈ·°üº¬ÕâÁ½¸ö×ֶΣ¬¶ø²»ÐèÒªÑéÖ¤
password ×ֶΡ£Ïû·ÑÕß B ʹÓà IP ºÍ password ×ֶΣ¬¶ø²»ÐèÒªÑéÖ¤ name
×ֶΡ£Ïû·ÑÕß C ÔòÐèҪȷÈÏ×ÊÔ´Öаüº¬ÁËËùÓÐÕâÈý¸ö×ֶΡ£ÏÖÔÚ£¬Èç¹ûÌṩÕßÐèÒª½« name ·ÖΪÐÕ£¨first
name£©ºÍÃû£¨last name£©£¬ÄÇô¾ÍÐèҪȥµôÔÓÐµÄ name ×ֶΣ¬¼ÓÈëÐ嵀 first name
×Ö¶ÎºÍ last name ×ֶΡ£ÕâʱִÐÐÆõÔ¼²âÊÔ£¬¾Í»á·¢ÏÖÏû·ÑÕß A ºÍ C µÄ²âÊÔÓÃÀý¾Í»áʧ°Ü¡£²âÊÔÓÃÀý
B Ôò²»ÊÜÓ°Ïì¡£ÕâÒâζ×ÅÏû·ÑÕß A ºÍ C ·þÎñµÄ´úÂëÐèÒªÐ޸ģ¬ÒÔ¼æÈݸüÐÂÖ®ºóµÄÌṩÕß¡£ÐÞ¸ÄÖ®ºó£¬»¹ÐèÒª¶ÔÆõÔ¼ÄÚÈݽøÐиüС£

ÏÂÃæÒÔÒ»¸öÀý×Ó½éÉÜÈçºÎʹÓÃSpring Cloud Contract¿ªÕ¹ÆõÔ¼²âÊԵġ£
Spring Cloud ContractÆõÔ¼ÊÇÓûùÓÚGroovyµÄDSL¶¨ÒåµÄ£¬ÏÂÃæÊÇÒ»¸öÆõÔ¼²âÊԵĴúÂë¶Î
package
contracts
org.springframework.cloud.contract.spec.Contract.make
{
request {
method 'PUT'
url '/fraudcheck'
body([
"client.id": $(regex('[0-9]{10}')),
loanAmount: 99999
])
headers {
contentType('application/json')
}
}
response {
status OK()
body([
fraudCheckStatus: "FRAUD",
"rejection.reason": "Amount too
high"
])
headers {
contentType('application/json')
}
}
}
|
·þÎñ·½-server (HTTP) / producer (Messaging) ¶ËÔö¼ÓSpring
Cloud Contract VerifierµÄgralde²å¼þ£¬ËüÓÃÓÚ½âÎöÆõÔ¼ÎļþÉú³É²âÊÔ¡£Éú³É²âÊÔµÄÃüÁî¡£
./gradlew
generateContractTests
|
ÏÂÃæÊÇ×Ô¶¯Éú³ÉµÄ²âÊԽű¾
@Test
public void validate_shouldMarkClientAsFraud()
throws Exception {
//given:
MockMvcRequestSpecification request = given()
.header("Content-Type", "application/vnd.fraud.v1+json")
.body("{\"client.id\":\"1234567890\",\"loanAmount\":99999}");
//when:
ResponseOptions response = given().spec(request)
.put("/fraudcheck");
//then:
assertThat(response.statusCode()).isEqualTo(200);
assertThat(response.header("Content-Type")).matches("application/vnd.fraud.v1.json.*");
//and:
DocumentContext parsedJson = JsonPath.parse(response.getBody().asString());
assertThatJson(parsedJson).field("['fraudCheckStatus']").matches("[A-Z]{5}");
assertThatJson(parsedJson).field("['rejection.reason']").isEqualTo("Amount
too high");
}
|
Õâ¸öÒ»¸ö±ê×¼µÄJUnit²âÊÔ,ÓÃRestAssuredÀ´Æô¶¯SpringµÄwebApplicationContext¡£
@Before
public void setup() {
RestAssuredMockMvc.webAppContextSetup
(webApplicationContext);}
|
µ÷Ó÷½-ÔÚ·þÎñ·½Í¨¹ýÃüÁîÉú³ÉStub·þÎñµÄJar°ü
./gradlew
verifierStubsJar
|
Spring Cloud Contract Stub RunnerÔÚ¼¯³É²âÊÔÖÐͨ¹ýÔËÐÐWireMockʵÀý»òÕßÏûϢ·ÓÉÄ£ÄâÕæÊµµÄ·þÎñ¡£
Òò´ËÔÚÔËÐÐ֮ǰ£¬ÐèÒª½«ÒÀÀµ¼ÓÈëµ½graldeÖÐ,µ±È»¿ÉÒÔ°ÑËû¼Óµ½Ë½·þ²Ö¿âÖС£
spring-cloud-starter-contract-stub-runner
|
¶ÔÓÚµ÷Ó÷½,Spring Cloud ContractÌṩÁËStub RunnerÀ´¼ò»¯StubµÄʹÓá£ÏÖÔÚ¿ÉÒÔʹÓÃ@AutoConfigureStubRunner×¢½â.ΪÁËSpring
Cloud Contract Stub RunnerÔËÐÐstubs×¢½âÖÐÔö¼ÓÁËgroup-idºÍartifact-id£¬¾ÙÀýÈçÏ£º
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@AutoConfigureStubRunner(ids = {"cn.vbill.service:test-client-stubs:1.5.0-SNAPSHOT:stubs:6565"},
stubsMode = StubRunnerProperties.StubsMode.LOCAL)
public class LoanApplicationServiceTests {
......
}
|
×¢½âAutoConfigureStubRunner£¬ÀïÃæÉèÖÃÁËÏÂÔØStub Jar°üµÄ˽¿âµØÖ·ÒÔ¼°°üµÄÍêÕû
ID£¬×îºóµÄ6565¾ÍÊÇÖ¸¶¨StubÔËÐеı¾µØ¶Ë¿Ú¡£²âÊÔµÄʱºò·ÃÎÊStub¶Ë¿Ú£¬¾Í»á¸ù¾ÝÆõÔ¼·µ»ØÄÚÈÝ¡£
ÓÉÓÚËæÐи¶Î¢·þÎñÊÇ»ùÓÚspring cloud¼¼ÊõÕ»£¬Òò´Ë²ÉÓÃspring cloud contract½øÐÐ΢·þÎñÏÂµÄÆõÔ¼²âÊÔʹµÃ²âÊÔ¹ý³Ì¸üÁ÷³©£¬¸ü˳Àû£¬Í¬Ê±Spring
Cloud ContractºÍSpringBootÒÔ¼° JunitµÄ¼¯³É¸ü¼òµ¥·½±ã¡£ÏàÐÅËæ×Åspring
cloud contract°æ±¾µÄÓÅ»¯£¬ÆõÔ¼²âÊÔ¿ÉÒÔ×öµÄ¸üºÃ¡£
×ܽá
ÔÚ΢·þÎñģʽÏ£¬·þÎñ¼äµÄµ÷ÓùØÏµ¸´ÔÓ£¬½Ó¿Ú²âÊÔºÍÆõÔ¼²âÊÔÊDZ£Ö¤·þÎñÌá¸ßÖÊÁ¿µÄÖØÒªÊֶΣ¬Òò´ËÒª³ä·ÖÀûÓá£
|