從零搭建一個SpringCloud項目之Feign搭建

從零搭建一個SpringCloud項目之Feign搭建

工程簡述

目的:實現trade服務通過feign調用user服務的功能。因爲trade服務會用到user裏的一些類和接口,所以抽出了其他服務需要的東西到user-api工程。避免trade直接依賴user導致依賴多餘的東西。

一、創建User接口工程user-api
新建一個module,取名爲study-user-api
引入pom文件

    <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依賴

    <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依賴

        <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工程。輸入網址測試

http://localhost:8005/trade/testTrade/1

github地址:https://github.com/mmcLine/spring-cloud-study

原文地址https://www.cnblogs.com/javammc/p/12638109.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章