首页 > 编程知识 正文

feign基于什么协议,应用力学简介

时间:2023-05-04 13:35:12 阅读:176212 作者:948

一点睛

Feign是Netflix开发的声明性、模板化的HTTP客户端,有助于更快、更优雅地调用HTTPAPI。

在SpringCloud中,您可以使用Feign非常简单的——创建一个接口,并在该接口中添加注释,然后完成代码。 Feign支持各种各样的注释,如Feign附带的注释和JAX-RS注释等。

SpringCloud增强了Feign,Feign支持SpringMVC注释,并将Ribbon和Eureka集成在一起,提高了Feign的易用性。

Spring Cloud Feign基于Netflix feign的实现,将SpringCloudRibbon和SpringCloudHystrix集成在一起,除了提供强大的功能外,还提供了一种声明性的Web服务客户端定义方法。

SpringCloudFeign有助于定义和实现依赖服务接口。 在SpringCloud feign实现中,只需创建一个接口并在注释中设置它,即可完成服务提供者接口的绑定,并在使用SpringCloudRibbon时自行封装服务调用

SpringCloudFeign提供了可插入的注释支持,支持Feign注释、JAX-RS注释和SpringMVC注释。

二创建项目microservice-consumer-movie-feign

三添加Feign依赖

? XML版本=' 1.0 '编码=' utf-8 '? project xmlns=' http://maven.Apache.org/POM/4.0.0 ' xmlns : xsi=' http://www.w3.org/2001/XML schema-ins TTS maven-4.0.0.xsd ' model version4.0.0/modelversiongroupidcom.it groupidartifactidmicroservice-consumer-movie 依赖versionpackagingjar/packaging spring boot部署--- parentgroupidorg.spring framework.boot/groupidartifactidspring-boot artifact parentpropertiesproject.build.sourceencodingutf-8/project.build.sourceencodingjava.version 1.8/Java.ven version propertiesdependenciesdependencygroupidorg.spring framework.boot/groupidartifactidspring-boot-starter-web/artifaccer ependencydependencygroupidorg.spring framework.boot/groupidartifactidspring-boot-starter-actuator/artior ependencydependencygroupidorg.spring framework.cloud/groupidartifactidspring-cloud-starter-eureka/artifact id/dud

lt;/groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency> </dependencies> <!-- 引入spring cloud的依赖 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Camden.SR4</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- 添加spring-boot的maven插件 --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>

四 创建一个Feign接口,并添加@FeignClient注解

package com.itmuch.cloud.study.user.feign;import org.springframework.cloud.netflix.feign.FeignClient;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import com.itmuch.cloud.study.user.entity.User;@FeignClient(name = "microservice-provider-user")public interface UserFeignClient { @RequestMapping(value = "/{id}", method = RequestMethod.GET) public User findById(@PathVariable("id") Long id);}

五 修改Controller代码,让其调用Feign接口

package com.itmuch.cloud.study.user.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;import com.itmuch.cloud.study.user.entity.User;import com.itmuch.cloud.study.user.feign.UserFeignClient;@RestControllerpublic class MovieController { @Autowired private UserFeignClient userFeignClient; @GetMapping("/user/{id}") public User findById(@PathVariable Long id) { return this.userFeignClient.findById(id); }}

六 修改启动类,为其添加@EnableFeignClients注解

package com.itmuch.cloud.study;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.netflix.feign.EnableFeignClients;@EnableDiscoveryClient@SpringBootApplication@EnableFeignClientspublic class ConsumerMovieApplication { public static void main(String[] args) { SpringApplication.run(ConsumerMovieApplication.class, args); }}

七 测试

1 启动eureka

2 启动2个user实例

3 启动feign

4 多次访问http://localhost:8010/user/1

发现两个微服务实例都会打印如下日志:

Hibernate: select user0_.id as id1_0_0_, user0_.age as age2_0_0_, user0_.balance as balance3_0_0_, user0_.name as name4_0_0_, user0_.username as username5_0_0_ from user user0_ where user0_.id=?

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。