zoukankan      html  css  js  c++  java
  • 【微服务架构】SpringCloud之Feign(五)

    Feign简介

    Feign 是一个声明web服务客户端,这便得编写web服务客户端更容易,使用Feign 创建一个接口并对它进行注解,它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring Cloud 增加了对 Spring MVC的注解,Spring Web 默认使用了HttpMessageConverters, Spring Cloud 集成 Ribbon 和 Eureka 提供的负载均衡的HTTP客户端 Feign.

    声明式REST客户端:Feign

    先要启动eureka_register_service工程(注册中心)和biz-service-0工程(服务生产者)

    创建一个maven工程eureka_feign_client

    pom.xml

    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>
        <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.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>Brixton.SR5</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
        </dependencies>
    </dependencyManagement>

    在应用主类中通过@EnableFeignClients注解开启Feign功能

    启动文件FeignApplication.java

    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableFeignClients
    public class FeignApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(FeignApplication.class, args);
        }
    
    }

    定义服务接口类UserClient.java

    使用@FeignClient("biz-service-0")注解来绑定该接口对应biz-service-0服务

    @FeignClient("biz-service-0")
    public interface UserClient {
    
        @RequestMapping(method = RequestMethod.GET, value = "/getuser")
        public User getuserinfo();
        
        @RequestMapping(method = RequestMethod.GET, value = "/getuser")
        public String getuserinfostr();
        
        @RequestMapping(method = RequestMethod.GET, value = "/info")
        public  String  info();
    
    }

    在web层中调用上面定义的UserController,具体如下

    @RestController
    public class UserController {
    
        @Autowired
        UserClient userClient;
    
        @RequestMapping(value = "/getuserinfo", method = RequestMethod.GET)
        public User getuserinfo() {
            return userClient.getuserinfo();
        }
        
        @RequestMapping(value = "/getuserinfostr", method = RequestMethod.GET)
        public String getuserinfostr() {
            return userClient.getuserinfostr();
        }
        
        @RequestMapping(value = "/info", method = RequestMethod.GET)
        public String info() {
            return userClient.info();
        }
    
    
    }

    application.properties配置变量

    spring.application.name=feign-consumer
    server.port=8004
    eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

    访问 http://127.0.0.1:8004/getuserinfo

    总结:

    其实通过Feign封装了HTTP调用服务方法,使得客户端像调用本地方法那样直接调用方法,类似Dubbo中暴露远程服务的方式,区别在于Dubbo是基于私有二进制协议,而Feign本质上还是个HTTP客户端

  • 相关阅读:
    (双指针 二分) leetcode 167. Two Sum II
    (双指针) leetcode 485. Max Consecutive Ones
    (双指针) leetcode 27. Remove Element
    (String) leetcode 67. Add Binary
    (数组) leetcode 66. Plus One
    (N叉树 BFS) leetcode429. N-ary Tree Level Order Traversal
    (N叉树 递归) leetcode 590. N-ary Tree Postorder Traversal
    (N叉树 递归) leetcode589. N-ary Tree Preorder Traversal
    (N叉树 DFS 递归 BFS) leetcode 559. Maximum Depth of N-ary Tree
    (BST 递归) leetcode98. Validate Binary Search Tree
  • 原文地址:https://www.cnblogs.com/xiaojunbo/p/7094377.html
Copyright © 2011-2022 走看看