SpringCloud(五)Feign客户端

SpringCloud中支持两种客户端调用工具

  • Rest RestTemplate
  • Feign客户端工具

一、搭建Feign项目

共有eureka和member、order三个module项目,前面两个项目与前几节一样

1、pom.xml

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2、yml

server:
  port: 8200
spring:
  application:
    name: allen-order

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8761/eureka/

3、Feign接口

//  @FeignClient调用服务接口, name就是调用的服务别名
@FeignClient(name = "allen-member")
public interface OrderApiFeign {
    
    

    //Feign 书写方式以SpirngMVC接口形式书写
    @RequestMapping("/getMember")
    public String getMember();
}

4、Controller

@RestController
public class OrderController {
    
    

    @Autowired
    private OrderApiFeign orderApiFeign;

    @RequestMapping("/getOrder")
    public String getOrder() {
    
    
        String member = orderApiFeign.getMember();
        return member;
    }
}

5、启动类

@SpringBootApplication
@EnableFeignClients   //开启Feign客户端
public class OrderApplication {
    
    

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

}

二、Feign客户端聚合项目

在这里插入图片描述

1、实体

@Data
public class UserEntity {
    
    

    private String name;
    private Integer age;
}

2、接口

public interface IMemberService {
    
    

    @RequestMapping("/getMember")
    public UserEntity getMember();
}

3、实现

@RestController
public class MemberService implements IMemberService {
    
    

    @RequestMapping("/getMember")
    public UserEntity getMember() {
    
    
        UserEntity user = new UserEntity();
        user.setName("小明");
        user.setAge(20);
        return user;
    }
}


    <dependencies>
        <dependency>
            <groupId>com.allen</groupId>
            <artifactId>springcloud2.0-api-member-service</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

4、启动类

@SpringBootApplication
public class MemberApplication {
    
    

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

}

5、配置文件

server:
  port: 9210

spring:
  application:
    name: zk-member
  cloud:
    zookeeper:
      connect-string: 127.0.0.1:2181

三、服务调用

1、pom.xml

    <artifactId>springcloud2.0-api-order-service</artifactId>
    <dependencies>
        <dependency>
            <groupId>com.allen</groupId>
            <artifactId>springcloud2.0-api-member-service</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

2、接口

public interface IOrderService {
    
    

    @RequestMapping("/getOrder")
    public UserEntity getOrder();
}

3、impl pom.xml

    <dependencies>
        <dependency>
            <groupId>com.allen</groupId>
            <artifactId>springcloud2.0-api-order-service</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

4、 yml

server:
  port: 9200

spring:
  application:
    name: zk-order
  cloud:
    zookeeper:
      connect-string: 127.0.0.1:2181

5、feign

@FeignClient(name = "zk-member")
public interface OrderApiFeign extends IMemberService {
    
    
}

6、service

@RestController
public class OrderService implements IOrderService {
    
    

    @Autowired
    private OrderApiFeign orderApiFeign;

    @RequestMapping("/getOrder")
    public UserEntity getOrder() {
    
    
        UserEntity user = orderApiFeign.getMember();
        return user;
    }
}

7、启动类

@SpringBootApplication
@EnableFeignClients
public class OrderApplication {
    
    

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

}

猜你喜欢

转载自blog.csdn.net/qq_38618691/article/details/119650134