SpringBoot + openFeign實現遠程接口調用的過程
SpringBoot服務之間通過openFeign實現遠程接口調用
現在的微服務項目不少都使用的是springboot+spring cloud構建的項目,微服務之間的調用都離不開feign來進行遠程調用。那麼我們一個服務需要調用第三方的服務的時候,我們常常可能使用httpclient
或者restTemplate
等客戶端api來實現遠程調用,其實我們可以在微服務沒有適用spring cloud框架的情況下,想調用第三方服務,也可以通過feign組件實現http的遠程調用。
實現過程
1.首先創建服務端項目,提供數據接口
1.1添加依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
1.2 配置application.yml
application.yml:
server: port: 8080 spring: application: name: serviceDemo
1.3 實體類
User:
package com.example.servicedemo.entity; import lombok.Data; /** * 用戶信息 * @author qzz */ @Data public class User { private Integer id; private String name; private Integer age; }
1.4 添加控制器方法
UserController:
package com.example.servicedemo.controller; import com.example.servicedemo.entity.User; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; /** * @author qzz */ @RestController public class UserController { @RequestMapping("/api/user/getUserList") public List<User> getUserList(){ //模擬數據庫請求數據 List<User> list = new ArrayList<>(); User user = new User(); user.setId(1); user.setName("Jack"); user.setAge(31); list.add(user); return list; } }
1.5 啟動類
package com.example.servicedemo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author qzz */ @SpringBootApplication public class ServiceDemoApplication { public static void main(String[] args) { SpringApplication.run(ServiceDemoApplication.class, args); } }
瀏覽器訪問:http://localhost:8080/api/user/getUserList
2.創建客戶端項目,調用服務端接口
2.1添加依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
2.2 配置application.yml
application.yml:
server: port: 8081 spring: application: name: clientName
2.3 實體類
User:
package com.example.clientdemo.entity; import lombok.Data; /** * @author qzz */ @Data public class User { private Integer id; private String name; private Integer age; }
2.4 創建OpenFeign接口
註意:@FeignClient的name和value屬性必填其一,另外url必填。
package com.example.clientdemo.feign; import com.example.clientdemo.entity.User; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; import java.util.List; /** * openFeign接口 * URL:就是遠程端需要調用接口的服務URL路徑,name:就是服務名,value和name一樣 * @author qzz */ @FeignClient(name = "serviceDemo",url = "http://localhost:8080") public interface ServiceDemoFeign { /** * 獲取用戶列表 * @return */ @RequestMapping("/api/user/getUserList") List<User> getUserList(); }
2.5 添加控制器方法
UserController:
/** * @author qzz */ @RestController public class UserController { /** * 註入OpenFeign接口 */ @Autowired private ServiceDemoFeign serviceDemoFeign; @RequestMapping("/api/client/user/getUserList") public List<User> getUserList(){ return serviceDemoFeign.getUserList(); } }
2.6 啟動類
啟動類需要添加@EnableFeignClients
註解。加入EnableFeignClients開啟Feign註解,使Feign的bean可以被註入
package com.example.clientdemo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.openfeign.EnableFeignClients; /** * @author qzz */ @EnableFeignClients @SpringBootApplication public class ClientDemoApplication { public static void main(String[] args) { SpringApplication.run(ClientDemoApplication.class, args); } }
2.7 測試效果
瀏覽器訪問:http://localhost:8081/api/client/user/getUserList
返回結果成功,說明服務調用成功。
完整代碼
點擊此處進行下載
到此這篇關於SpringBoot + openFeign實現遠程接口調用的文章就介紹到這瞭,更多相關SpringBoot openFeign遠程接口調用內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- springcloud 整合 openfeign的方法
- springBoot使用openfeign來遠程調用的實現
- SpringCloud openfeign聲明式服務調用實現方法介紹
- OpenFeign服務接口調用的過程詳解
- SpringCloud使用Feign實現動態路由操作