前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >玩转SpringCloud(F版本) 二.服务消费者(2)feign

玩转SpringCloud(F版本) 二.服务消费者(2)feign

作者头像
房上的猫
发布2019-01-24 11:01:06
5250
发布2019-01-24 11:01:06
举报
文章被收录于专栏:个人随笔个人随笔

上一篇博客讲解了服务消费者的ribbon+restTemplate 模式的搭建,此篇文章将要讲解服务消费者feign模式的搭建,这里是为了普及知识 平时的项目中两种消费模式选择其一即可

本篇博客基于博客 玩转SpringCloud 一.服务的注册与发现(Eureka) 中的项目为基础  : https://www.cnblogs.com/lsy131479/p/9613755.html

2. feign

Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。

简而言之:

· Feign 采用的是基于接口的注解

· Feign 整合了ribbon,具有负载均衡的能力

· 整合了Hystrix,具有熔断的能力

老套路:

启动demo1,端口为8761; 启动demo2两次,端口分别为8762 、8773.

新建一个spring-boot工程,

取名为demo4

项目架构:

在它的pom文件引入Feign的起步依赖spring-cloud-starter-feign、Eureka的起步依赖spring-cloud-starter-netflix-eureka-client、Web的起步依赖spring-boot-starter-web,

代码语言:javascript
复制
<parent>
   <groupId>com.fsdm</groupId>
   <artifactId>SpringCloud_test1</artifactId>
   <version>1.0-SNAPSHOT</version>
</parent>
   <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.cloud</groupId>
           <artifactId>spring-cloud-starter-openfeign</artifactId>
       </dependency>
   </dependencies>

在工程的配置文件application.yml文件,

指定程序名为service-feign,端口号为8765,服务注册地址为http://localhost:8761/eureka/

代码语言:javascript
复制
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 8765
spring:
  application:
    name: service-feign

定义一个feign接口,

通过@ FeignClient(“服务名”),来指定调用哪个服务。比如在代码中调用了service-hi服务的“/hi”接口

代码语言:javascript
复制
@FeignClient(value = "service-hi")
public interface SchedualServiceHi {
    @RequestMapping(value = "/hi",method = RequestMethod.GET)
    String sayHiFromClientOne(@RequestParam(value = "name") String name);
}

注解解析:

@FeignClient

1. feign模式来指定调用哪个服务

@RequestMapping

1.类定义处: 提供初步的请求映射信息。相对于 WEB 应用的根目录;

2.方法处: 提供进一步的细分映射信息。 相对于类定义处的 URL。

3.若类定义处未标注 @RequestMapping,则方法处标记的 URL相对于 WEB 应用的根目录

4.返回ModelAndView时的url会根据你的 @RequestMapping实际情况组成。

5.如果类上没有映射,那么url直接就是方法的映射;否则url为类上+方法上映射路径组合。

在Web层的controller层,对外暴露一个”/hi”的API接口,通过上面定义的Feign客户端SchedualServiceHi 来消费服务。

代码语言:javascript
复制
@RestController  
public class HiController {
    //编译器报错,无视。 因为这个Bean是在程序启动的时候注入的,编译器感知不到,所以报错。
    @Autowired
    SchedualServiceHi schedualServiceHi;

    @GetMapping(value = "/hi")
    public String sayHi(@RequestParam String name) {
        return schedualServiceHi.sayHiFromClientOne( name );
    }

}

注解解析:

@Autowired

代码语言:txt
复制
1.可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作

1. 可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作

@GetMapping

1. Spring4.3中引进

2. 来帮助简化常用的HTTP方法的映射,并更好地表达被注解方法的语义。

3.  @GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。该注解将HTTP Get 映射到 特定的处理方法上。

Application启动类:

代码语言:javascript
复制
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients
public class Demo4Application {

   public static void main(String[] args) {
      SpringApplication.run(Demo4Application.class, args);
   }

}

注解解析:

@EnableFeignClients

1. 指定为feign角色

启动程序,多次访问http://localhost:8765/hi?name=fsdm,浏览器交替显示:

未完,待续。。。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2. feign
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档