1. 程式人生 > >從零搭建一個SpringCloud專案之Feign搭建

從零搭建一個SpringCloud專案之Feign搭建

# 從零搭建一個SpringCloud專案之Feign搭建 ## 工程簡述 ![](https://img2020.cnblogs.com/blog/1178991/202004/1178991-20200405171937461-321936785.png) 目的:實現trade服務通過feign呼叫user服務的功能。因為trade服務會用到user裡的一些類和介面,所以抽出了其他服務需要的東西到user-api工程。避免trade直接依賴user導致依賴多餘的東西。 ## 一、建立User介面工程user-api 1. 新建一個module,取名為study-user-api 2. 引入pom檔案 ``` ``` 3. 建立一個User實體類 4. 編寫一個UserApi介面,value裡的study-user對應後面user實現工程的spring.application.name的值 ``` @FeignClient(value = "study-user") public interface UserApi { @RequestMapping(value = "/getUserById",method = RequestMethod.GET) User getUserById(Integer id); } ``` ## 二、建立User實現工程 1. 建立一個module用於對user介面提供實現,專案名為study-user 2. 加入pom依賴 ``` ``` 3. 配置檔案 ``` server.port=8003 #註冊到eureka服務端的微服務名稱 spring.application.name=study-user #註冊到eureka服務端的地址 #eureka.client.service-url.defaultZone=http://localhost:9000/eureka/ security.login.username=root security.login.pass=123456789 eureka.client.service-url.defaultZone=http://${security.login.username}:${security.login.pass}@localhost:9000/eureka/ #點選具體的微服務,是否顯示ip eureka.instance.prefer-ip-address=true eureka.instance.instance-id=study-user-8003 ``` 4. 寫user介面實現,一個UserController ``` @RestController @RequestMapping("/user") public class UserController { @RequestMapping("/getUserById") public User getUserById(Integer id){ User user = new User(); user.setId(1); user.setName("小明"); return user; } } ``` ### 三、建立交易工程 1. 新建一個module,專案名為study-trade 2. 引入pom依賴 ``` ``` 3. 編寫配置檔案 ``` server.port=8005 #註冊到eureka服務端的微服務名稱 spring.application.name=study-trade #註冊到eureka服務端的地址 #eureka.client.service-url.defaultZone=http://localhost:9000/eureka/ security.login.username=root security.login.pass=123456789 eureka.client.service-url.defaultZone=http://${security.login.username}:${security.login.pass}@localhost:9000/eureka/ #點選具體的微服務,是否顯示ip eureka.instance.prefer-ip-address=true eureka.instance.instance-id=study-trade-8005 ``` 4. 寫controller呼叫user服務 ``` /** * @description: * @author: mmc * @create: 2020-04-05 11:41 **/ @RestController @RequestMapping("/trade") public class TradeController { @Autowired private UserApi userApi; @RequestMapping(value = "/testTrade/{userid}",method = RequestMethod.GET) public String testTrade(@PathVariable Integer userid){ User user= userApi.getUserById(userid); String name = user.getName(); System.out.println("使用者"+name+"下單成功...."); return "使用者"+name+"下單成功"; } } ``` 5. 啟動類配置啟用feign註解 ``` @SpringBootApplication @EnableFeignClients(basePackages = "com.mmc.user") public class TradeApplication { public static void main(String[] args) { SpringApplication.run(TradeApplication.class); } } ``` 6. 測試 依次啟動eureka Server,user工程,trade工程。輸入網址測試 > http://localhost:8005/trade/testTrade/1 github地址:https://github.com/mmcLine/spring-cloud-study