Feign简介
微服务架构服务实例众多,服务与服务之间如何调用,Spring Cloud提供了解决方案:伪装者 Feign。
Feign 是 Spring Cloud 的一个组件,也是一个WebService客户端,用于服务之间的调动。
详细了解Feign可以查看:https://blog.csdn.net/wo18237095579/article/details/83343915
创建好两个服务
创建好两个项目及是两个服务,配置好注册中心,然后启动两个服务,能在自己配置的注册中心看到两个服务名:我的两个服务,Daily-server 和 Task-Server。如下:
Feign 微服务间调用的方法
我这里是通过 Daily-server 调用 Task-server 的方法,首先配置 Daily-server,详情如下:
- 添加依赖
1.1:添加 Feign 的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<scope>provided</scope>
</dependency>
1.2 这里如果是springboot项目整合spring cloud 时,也就是你项目中还有spring boot 的依赖时,需添加spring cloud的依赖为:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
1.3 直接创建spring cloud项目的时候即不需要上面 1.2 的步骤,直接添加spring cloud的依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
- 在服务启动类添加注解
@EnableFeignClients
如下:
3.创建接口引用TaskServer的接口
package ...app.feign;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@FeignClient("task-server")
public interface TaskServerFeign {
@GetMapping("/task/test")
String getTest();
}
这里的 @FeignClient(“task-server”) 中 task-server就是你的另一个服务的名称
@GetMapping("/task/test") 另一个服务中的接口地址
String getTest(); 另一个服务的接口名称。
4. 创建测试接口 并调用另一个服务的接口
import 。。。.feign.TaskServerFeign;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Api(tags = {"Feign测试"})
public class FeignTest {
@Autowired
private TaskServerFeign taskServerFeign;
@GetMapping("/task/test1")
public void getTest() {
String test = taskServerFeign.getTest();
System.out.println(test);
System.out.println("----------this is daily_Server_test");
}
}
@Api(tags = {“Feign测试”}) 这个注解只是本地用于 swagger 测试用的,大家也可以使用其他方式调用这个接口进行测试,如:postman
@Autowired
private TaskServerFeign taskServerFeign; 注入第三步调用 task-server 的接口。
5. 在task-server中创建被调用的接口
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class FeignTest {
@GetMapping("/task/test")
public String getTest() {
System.out.println("----------this is task_Server_test");
return "this is task_Server_test";
}
}
接下来就是运行,测试了。本地测试如下:
这里是测试工具进行测试,
这里是Daily-server中
这是 Task-servrer中
这结果显而易见了,菜鸟小白随时欢迎大家提出意见.。0。0