從零搭建一個SpringCloud項目之Feign搭建
工程簡述
目的:實現trade服務通過feign調用user服務的功能。因為trade服務會用到user里的一些類和接口,所以抽出了其他服務需要的東西到user-api工程。避免trade直接依賴user導致依賴多余的東西。
一、創建User接口工程user-api
- 新建一個module,取名為study-user-api
- 引入pom文件
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
- 創建一個User實體類
- 編寫一個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實現工程
- 創建一個module用於對user接口提供實現,項目名為study-user
- 加入pom依賴
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 本地依賴-->
<dependency>
<artifactId>study-user-api</artifactId>
<groupId>com.mmc</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
- 配置文件
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
- 寫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;
}
}
三、創建交易工程
- 新建一個module,項目名為study-trade
- 引入pom依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<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>
<artifactId>study-user-api</artifactId>
<groupId>com.mmc</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
- 編寫配置文件
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
- 寫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+"下單成功";
}
}
- 啟動類配置啟用feign注解
@SpringBootApplication
@EnableFeignClients(basePackages = "com.mmc.user")
public class TradeApplication {
public static void main(String[] args) {
SpringApplication.run(TradeApplication.class);
}
}
- 測試
依次啟動eureka Server,user工程,trade工程。輸入網址測試