# openFeign **Repository Path**: WangRuoXv/open-feign ## Basic Information - **Project Name**: openFeign - **Description**: openFeign的学习案例项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-27 - **Last Updated**: 2026-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenFeign + Nacos 演示项目 一个简单的Spring Cloud微服务演示,展示如何使用 **OpenFeign** 进行服务间调用,以及使用 **Nacos** 作为服务注册中心。 ## 技术栈 | 组件 | 版本 | |------|------| | Spring Boot | 2.7.18 | | Spring Cloud | 2021.0.8 | | Spring Cloud Alibaba | 2021.0.5.0 | | Nacos Client | 1.4.2(兼容Nacos 1.4.1) | ## 项目结构 ``` openfeign-demo/ ├── provider/ # 服务提供者 (端口8080) │ └── ProviderController.java # 提供 /test/hello 接口 └── consumer/ # 服务消费者 (端口8081) ├── ProviderClient.java # Feign客户端定义 └── FeignTest.java # 测试类 ``` ## 核心代码 ### 服务提供者 (Provider) ```java @RestController @RequestMapping("/test") public class ProviderController { @GetMapping("/hello") public HashMap hello() { HashMap map = new HashMap<>(); map.put("name", "wrx"); map.put("age", "23"); return map; } } ``` ### Feign客户端 (Consumer) ```java @FeignClient(name = "user-service", path = "/test") public interface ProviderClient { @GetMapping("/hello") HashMap hello(); } ``` ## 快速启动 ### 前置条件 - Nacos 1.4.1 运行在本地Docker(端口8848) - JDK 1.8+ - Maven 3.6+ ### 1. 编译项目 ```bash mvn clean install ``` ### 2. 启动服务提供者 ```bash cd provider mvn spring-boot:run ``` 或运行 `ProviderApplication` ### 3. 启动服务消费者 ```bash cd consumer mvn spring-boot:run ``` 或运行 `ConsumerApplication` ## 验证 ### 直接访问Provider ```bash curl http://localhost:8080/test/hello # 返回: {"name": "wrx", "age": "23"} ``` ### 运行Feign测试 ```bash cd consumer mvn test -Dtest=FeignTest ``` 或直接在IDE中运行 `FeignTest` 测试类。 ## 关键点说明 ### FeignClient的path属性 使用 `path = "/test"` 指定基础路径,与Controller的 `@RequestMapping("/test")` 保持一致,避免在方法上写完整路径: ```java // 优雅写法 @FeignClient(name = "user-service", path = "/test") public interface ProviderClient { @GetMapping("/hello") HashMap hello(); } // 对比:不优雅写法(不推荐) @FeignClient(name = "user-service") public interface ProviderClient { @GetMapping("/test/hello") HashMap hello(); } ``` **注意**:`@FeignClient` 接口上不能使用 `@RequestMapping` 注解。 ### Nacos版本兼容 父POM中强制指定了Nacos客户端版本: ```xml 1.4.2 ``` 确保与Nacos 1.4.1服务器版本兼容。 ## 服务注册中心配置 | 服务 | 应用名 | 端口 | |------|--------|------| | provider | user-service | 8080 | | consumer | user-consumer | 8081 | Nacos控制台地址: http://localhost:8848/nacos ## License MIT