รู้เบื้องต้น
Feign เป็นไคลเอนต์บริการเว็บที่ประกาศซึ่งทำให้ง่ายต่อการเขียนไคลเอนต์บริการเว็บ ใช้ Feign เพื่อสร้างอินเทอร์เฟซและใส่คำอธิบายประกอบ มันมีการสนับสนุนคำอธิบายประกอบที่สามารถทำได้รวมถึงคำอธิบายประกอบการปลอมแปลงและคำอธิบายประกอบ JAX-RS Feign ยังรองรับการเข้ารหัสและตัวถอดรหัสที่สามารถทำได้ สปริงคลาวด์เพิ่มคำอธิบายประกอบให้กับสปริง MVC Spring Web ใช้ httpmessageConverters โดยค่าเริ่มต้นและสปริงคลาวด์รวมการแกล้งไคลเอนต์ HTTP ที่สมดุลที่ได้รับจาก Ribbon และ Eureka
ลูกค้าส่วนที่เหลือที่ประกาศ: แสร้งทำเป็น
ก่อนอื่นให้เริ่มโครงการ Eureka_Register_Service (ศูนย์ทะเบียน) และโครงการ Biz-Service-0 (ผู้ผลิตบริการ)
สร้างโครงการ Maven Eureka_feign_client
pom.xml
<carent> <roupId> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Parent </artifactid> <version> 1.4.3.release </เวอร์ชัน> <inelypath/> <! -> </parent> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <java.version> 1.8 </java.version> </properties> <pendencies> <ratifactid> Spring-Cloud-Starter-Feign </artifactid> </serdency> <การพึ่งพา> <roupId> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Starter-eureka </artifactid> <ArtIfactId> Spring-Boot-Starter-WEB </artifactId> </การพึ่งพาอาศัย> <การพึ่งพาอาศัย> <roupId> org.springframework.boot </groupId> <ratifactid> การพึ่งพาการทดสอบการพึ่งพาสปริง <RoupID> org.springframework.cloud </groupId> <ratifactid> สปริงคลาวด์-พึ่งพาอาศัยกัน </artifactid> <persion> brixton.sr5 </version> <ply> pom </type> <pope> นำเข้า </pope>
เปิดใช้งานฟังก์ชั่น feign ผ่าน @enablefeignclient คำอธิบายประกอบในคลาสแอปพลิเคชันหลัก
เริ่มไฟล์ feignapplication.java
@springbootapplication@enablediscoveryclient@enablefeignclientspublic คลาส feignapplication {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {springapplication.run (feignapplication.class, args); -กำหนดคลาสอินเตอร์เฟสบริการ userclient.java
ใช้คำอธิบายประกอบ @feignclient ("biz-service-0") เพื่อผูกมัดบริการ biz-service-0 ที่สอดคล้องกันของอินเทอร์เฟซนี้
@feignClient ("biz-service-0") ส่วนต่อประสานสาธารณะ userclient {@requestmapping (method = requestmethod.get, value = "/getuser") ผู้ใช้สาธารณะ getUserInfo (); @RequestMapping (method = requestMethod.get, value = "/getUser") สตริงสาธารณะ getUserInFOSTR (); @RequestMapping (method = requestMethod.get, value = "/info") ข้อมูลสตริงสาธารณะ ();}โทรหา USERCONTROLLER ที่กำหนดไว้ข้างต้นใน Web Layer ดังนี้
@RestControllerPublic คลาส USERCONTROLLER {@AUTOWIRED USERCLIENT USERCLIENT; @RequestMapping (value = "/getUserInfo", method = requestMethod.get) ผู้ใช้สาธารณะ getUserInfo () {return userClient.getUserInfo (); } @RequestMapping (value = "/getUserInFoStr", method = requestMethod.get) สตริงสาธารณะ getUserInfOSTR () {return userClient.getUserInfOSTR (); } @RequestMapping (value = "/info", method = requestMethod.get) ข้อมูลสตริงสาธารณะ () {return userClient.info (); - Application.properties ตัวแปรการกำหนดค่า
spring.application.name = feign-consumerserver.port = 8004eureka.client.serviceurl.defaultzone = http: // localhost: 8000/eureka/
เยี่ยมชม http://127.0.0.1:8004/getUserInfo
สรุป:
ในความเป็นจริงวิธีการบริการการโทร HTTP ถูกห่อหุ้มด้วยการปลอมแปลงเพื่อให้ไคลเอ็นต์เรียกวิธีการโดยตรงเช่นเรียกวิธีการในท้องถิ่น เช่นเดียวกับวิธีการเปิดเผยบริการระยะไกลใน Dubbo ความแตกต่างคือ Dubbo ขึ้นอยู่กับโปรโตคอลไบนารีส่วนตัวในขณะที่การแกล้งเป็นลูกค้า HTTP เป็นหลัก
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น