工程简述
目的: 实现 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 工程. 输入网址测试
http://localhost:8005/trade/testTrade/1
GitHub 地址: https://github.com/mmcLine/spring-cloud-study
来源: https://www.cnblogs.com/javammc/p/12638109.html