OpenFeign
OpenFeign支持@RequestMappin之类的Spring MVC注解,是一个声明式Web服务客户端和模板化的HTTP客户端。@FeignClient可以解析Spring MVC的@RequestMapping、@GetMapping等注解,通过动态代理生成实现类,在类中实现负载均衡,调用其他服务。其隐藏了REST请求,这样就不用动手拼接URL,OpenFeign都包了。
目录结构
- 📄test.py
- 📁demo
- 📄pom.xml
- 📁eureka-server
- 📄pom.xml
- 📁src
- 📁test.java
- 📁org/example/demo/eureka
- 📄EurekaServerApplication.java
- 📁org/example/demo/eureka
- 📁main/java
- 📁org/example/demo/eureka
- 📄EurekaServerApplicationTests.java
- 📁resources
- 📄application.properties
- 📁org/example/demo/eureka
- 📁test.java
- 📁demo-server
- 📄pom.xml
- 📁src
- 📁test.java
- 📁org/example/demo
- 📄ServerApplicationTests.java
- 📁org/example/demo
- 📁main/java
- 📁org/example/demo/server
- 📁controllers
- 📄SimpleController.java
- 📄ServerApplication.java
- 📁controllers
- 📁resources
- 📄application.properties
- 📁org/example/demo/server
- 📁test.java
- 📁demo-client
- 📄pom.xml
- 📁src
- 📁test.java
- 📁org/example/demo
- 📄ClientApplicationTests.java
- 📁org/example/demo
- 📁main/java
- 📁org/example/demo/client
- 📁services
- 📄IGetSimpleStrService.java
- 📁api
- 📄SimpleApi.java
- 📄ClientApplication.java
- 📁services
- 📁resources
- 📄application.properties
- 📁org/example/demo/client
- 📁test.java
配置文件
demo/pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.6</version>
<relativePath/>
</parent>
<groupId>org.example</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<spring-cloud.version>2021.0.1</spring-cloud.version>
</properties>
<modules>
<module>demo-client</module>
<module>demo-server</module>
<module>eureka-server</module>
</modules>
<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>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId