คำนำ
ในการออกแบบ microservice การโทรระหว่างบริการเป็นเรื่องปกติ โดยปกติแล้วเราจะใช้ HTTPClient เพื่อใช้การโทรไปยังทรัพยากรระยะไกล วิธีนี้ต้องการความรู้เกี่ยวกับที่อยู่ของบริการที่อยู่อินเทอร์เฟซทางธุรกิจ ฯลฯ และคุณต้องรอจนกว่าจะเสร็จสมบูรณ์ก่อนที่คุณจะเรียกได้ นี่ไม่ใช่สิ่งที่ดีสำหรับการพัฒนาแบบบูรณาการ มันมีการพึ่งพาอย่างมากระหว่างบริการ A และ B แล้วเราจะแยกออกได้อย่างไร? คำตอบคือ OpenFeign Framework ซึ่งเป็นส่วนหนึ่งของ SpringCloudy
1 เพิ่มการอ้างอิงแพ็คเกจ
'org.springframework.cloud:spring-cloud-starter-openfeign'
หมายเหตุ: หากคุณไม่ได้อ้างอิงเวอร์ชัน SpringCloudy มีคนจำนวนมากเกินไปคุณต้องประกาศก่อน
การจัดการพึ่งพา {นำเข้า {mavenbom "org.springframework.cloud:spring-cloud-dependencies:$ {springcloudversion}"2 กำหนดค่าโปรไฟล์ที่เกี่ยวข้อง
// การกำหนดค่าของพา ธ ไฟล์เริ่มต้นแหล่งที่มา {integtest {java.srcdir ไฟล์ ('src/test/java') ทรัพยากรไฟล์ไฟล์ ('src/test/resources')}} งาน integtest (ประเภท: ทดสอบ) sourcesets.test.runtimeclasspath}3 กำหนดอินเทอร์เฟซบริการและกำหนดวิธีหลอกซึ่งเป็นวิธีการในบริการ คุณต้องรู้พารามิเตอร์วิธีการและค่าการส่งคืน คุณไม่ต้องกังวลเกี่ยวกับการใช้งานเพียงแค่เยาะเย้ยในการทดสอบหน่วย
Package Test.lind.javalindday.feignlientdemo; นำเข้า org.springframework.cloud.openfeign.feignclient; นำเข้า org.springframework.context.annotation.profile; นำเข้า org.springframework.web.bind.bind. */@profile ("! integtest")@feignClient (name = "serviceName") mockclient อินเตอร์เฟสสาธารณะ {@getMapping (path = "/balancesheet/{clientCode}") สตริง balancesheet (String clientCode);};4 บทบาทของโปรไฟล์
โปรไฟล์เป็นตัวแปรสภาพแวดล้อม คุณเปิดใช้งานผ่าน ActiveProfile ในชั้นเรียน เมื่อใช้งานคุณได้ใช้คำอธิบายประกอบโปรไฟล์ ในรหัสข้างต้นวัตถุ mockclient ไม่สามารถใช้ในสภาพแวดล้อม integtest
5 เพิ่มการใช้งานจำลองจะถูกฉีดโดยอัตโนมัติดังนั้นจึงประกาศคำอธิบายประกอบ @bean
การทดสอบแพ็คเกจ. lind.javalindday; นำเข้า org.mockito.argumentmatchers.anystring; นำเข้า org.mockito.mockito.mockito.mockito; นำเข้า org.mockito.mockito.when; org.springframework.context.annotation.configuration; นำเข้า org.springframework.context.annotation.profile; นำเข้า test.lind.javalindday.feignlientdemo.mockclient;@configuration@profile ( เยาะเย้ย (mockclient.class); เมื่อ (client.alancesheet (anystring ())) .thenreturn ("ตกลง"); ไคลเอนต์ส่งคืน; -6 เพิ่มการทดสอบหน่วยตรวจสอบให้แน่ใจว่าได้ระบุตัวแปรสภาพแวดล้อมในการทดสอบหน่วย
Package Test.lind.javalindday; นำเข้า org.junit.assert.assertequals; นำเข้า org.junit.test; นำเข้า org.junit.runner.runwith; นำเข้า org.springframework.beans.factory.annotation. org.springframework.test.context.activeprofiles; นำเข้า org.springframework.test.context.junit4.springrunner; นำเข้า test.lind.javalindday.feignclientdemo.mockclient; @runwith JavalinddayApplicationTests {@autowired mockclient mockclient; @Test โมฆะสาธารณะ testMockClient () {asserTequals (mockClient.balancesheet ("ตกลง"), "ตกลง"); -หลังจากเรียกใช้การทดสอบแล้ว mockclient จะถูกฉีดและจะใช้คลาสการใช้งานจำลองเนื่องจากเฉพาะโปรไฟล์ของคลาสการใช้งานจำลองเท่านั้นที่จะอยู่ในสภาพแวดล้อมที่เป็นจำนวนมาก
ด้วย OpenFeign การเรียกใช้บริการไปยังบริการพัฒนาสามารถแยกได้ในอนาคต!
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com