從零搭建一個SpringCloud項目之Feign(二)


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

工程簡述


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

一、創建User接口工程user-api

  1. 新建一個module,取名為study-user-api
  2. 引入pom文件
  <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>
  1. 創建一個User實體類
  2. 編寫一個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依賴
 <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>
  1. 配置文件
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
  1. 寫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依賴
<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>
  1. 編寫配置文件
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
  1. 寫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+"下單成功";
    }
}

  1. 啟動類配置啟用feign注解
@SpringBootApplication
@EnableFeignClients(basePackages = "com.mmc.user")
public class TradeApplication {

    public static void main(String[] args) {
        SpringApplication.run(TradeApplication.class);
    }

}
  1. 測試

依次啟動eureka Server,user工程,trade工程。輸入網址測試

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM