zoukankan      html  css  js  c++  java
  • Feign 第一个Feign程序 一

    Feign 开源地址:https://github.com/OpenFeign/feign

    1.编写接口服务

    (1)导入jar包

    <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.0.2.RELEASE</version>
      </parent>
    
      <dependencies>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
      </dependencies>

    (2)编写接口

    public class Person {
        private Integer id;
        private String name;
        private Integer age;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }
      @RequestMapping(value = "/hello", method = RequestMethod.GET)
        public String hello() {
            return "hello world";
        }
    
        @RequestMapping(value = "/person/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
        public Person person(@PathVariable  Integer id) {
            Person person = new Person();
            person.setAge(18);
            person.setId(id);
            person.setName("aa");
            return person;
        }

    2.Feign客户端 (此处通过cxf做一个对比)

    (1)cxf客户端

    <dependencies>
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-core</artifactId>
                <version>3.1.10</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-rs-client</artifactId>
                <version>3.1.10</version>
            </dependency>
        </dependencies>
    public class CxfClient {
    
        public static void main(String[] args) throws Exception{
            //创建WebClient
            WebClient client = WebClient.create("http://localhost:8080/hello");
    
            //获取响应
            Response response = client.get();
    
            //获取响应内容
            InputStream inputStream = (InputStream) response.getEntity();
            String content =  IOUtils.readStringFromStream(inputStream);
    
            //输出结果
            System.out.println("返回结果为:" + content);
        }
    }

    (2)feign客户端

    <dependencies>
        <dependency>
          <groupId>io.github.openfeign</groupId>
          <artifactId>feign-core</artifactId>
          <version>9.5.0</version>
        </dependency>
    
        <dependency>
          <groupId>io.github.openfeign</groupId>
          <artifactId>feign-gson</artifactId>
          <version>9.5.0</version>
        </dependency>
      </dependencies>
    import com.idelan.cloud.model.Person;
    import feign.Param;
    import feign.RequestLine;
    
    /**
     * Created with IDEA
     * User gyli
     * date 2018/12/6
     */
    public interface ClientInterface {
    
        @RequestLine("GET /hello")
        public String hello();
    
        @RequestLine("GET /person/{id}")
        public Person getPerson(@Param("id") Integer id);
    }
    public static void main(String[] args) {
            ClientInterface helloClient = Feign.builder().target(ClientInterface.class, "http://localhost:8080");
    
            String hello = helloClient.hello();
            System.out.println(hello);
    
            ClientInterface clientInterface = Feign.builder()
                    .decoder(new GsonDecoder())
                    .target(ClientInterface.class, "http://localhost:8080");
    
            Person person = clientInterface.getPerson(2);
            System.out.println(person.getId());
            System.out.println(person.getName());
            System.out.println(person.getAge());
        }
  • 相关阅读:
    Fragment_3_Androidx中返回键的处理
    2.2.3.Architecture components_View Binding
    2.2.2.Architecture components_data binding2_源码分析
    经典排序
    动态规划求解最长公共子序列
    全排列问题
    钢条切割
    KMP
    Queue
    Stack
  • 原文地址:https://www.cnblogs.com/gyli20170901/p/10077414.html
Copyright © 2011-2022 走看看