笔记
笔记
mrdoc网站使用教程
k8s
笔记2
JAVA
连接池
spring cloud
ribbon
Feign
Netflix
JAVA题库V1.0
MrDoc数据迁移
MrDoc删除自带广告
优秀的博客
书签
雪花特效
雪花特效1
雪花特效2
雪花特效3
飞花特效
妙笔生花js
常用网站
页面新型效果特效篇
粒子球特效
linux 三剑客
mrdoc 精简附件和图片目录
系统换源
-
+
首页
Feign
一、Feign简介 Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。 简而言之: Feign 采用的是基于接口的注解 Feign 整合了ribbon 二、准备工作 继续用上一节的工程, 启动eureka-server,端口为9090; 启动service-hi 两次,端口分别为9091 、9092. 三、创建一个feign的服务 新建一个spring-boot工程,取名为serice-feign,在它的pom文件引入Feign的起步依赖spring-cloud-starter-feign、Eureka的起步依赖spring-cloud-starter-eureka、Web的起步依赖spring-boot-starter-web,代码如下: <?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> <groupId>com.jeffrey</groupId> <artifactId>service-feign</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>service-feign</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.12.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Edgware.SR3</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</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-feign</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> server: port: 10002 spring: application: name: eureka-consumer eureka: client: service-url: defaultZone: http://localhost:8761/eureka #设置feign熔断特性 feign: hystrix: enabled: true 在程序的启动类ServiceFeignApplication ,加上@EnableFeignClients注解开启Feign的功能: @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class ServiceFeignApplication { public static void main(String[] args) { SpringApplication.run(ServiceFeignApplication.class, args); } } 定义一个feign接口,通过@ FeignClient(“服务名”),来指定调用哪个服务。比如在代码中调用了service-provider服务的“/hello”接口,代码如下: /** * Created by Jeffrey on 2018/4/21 0021. */ @FeignClient(value="service-provider") //通过@FeignClient(value="服务名") 定义该接口调用哪项服务 public interface SchedualServiceProvider { /** * 调用service-provider服务的/hello接口,并传name参数 * @param name 接口调用必须的参数 * @return */ @RequestMapping(value="/hello",method = RequestMethod.GET) public String sayHello(@RequestParam(value="name") String name); } 在Web层的controller层,对外暴露一个”/hello”的API接口,通过上面定义的Feign客户端SchedualServiceProvider 来消费服务。代码如下: /** * Created by Jeffrey on 2018/4/21 0021. */ @RestController public class HelloController { @Autowired private SchedualServiceProvider schedualServiceProvider; @RequestMapping(value="/hello",method= RequestMethod.GET) public String sayHelli(@RequestParam String name){ return schedualServiceProvider.sayHello(name); } } 启动程序,多次访问http://localhost:9094/hello?name=jeffrey,浏览器交替显示:
JRT
2021年12月2日 22:58
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码