從零搭建一個SpringCloud專案之Feign搭建
阿新 • • 發佈:2020-04-05
# 從零搭建一個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