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());
        }
  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number (考虑负数的情况)
    8. String to Integer (整数的溢出)
    7. Reverse Integer (整数的溢出)
    LeetCode Minimum Size Subarray Sum
    LeetCode Course Schedule II
    Linux 文件缓存 (一)
    LeetCode Tries Prefix Tree
    Linux : lsof 命令
    LeetCode Binary Tree Right Side View
  • 原文地址:https://www.cnblogs.com/gyli20170901/p/10077414.html
Copyright © 2011-2022 走看看