Feign服务调用

1. 导入jarbao

        <!-- feign服务调用 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.0.3.RELEASE</version>
        </dependency>

        <!--        引入SpringCloud Eureka client的依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.0.3.RELEASE</version>
        </dependency>
    <!--    约束整个项目的SpringCloud版本-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

2. 入口类

@SpringBootApplication
/**
 * 声明当前项目为Eureka客户端
 * 只能注册到Eureka Servser注册中心
 */
// @EnableEurekaClient
/**
 * 声明当前客户端为可被发现
 * 不仅可以注册到Eureka Server  也可以注册到其他注册中心
 */
@EnableDiscoveryClient
/**
 * 声明当前服务可以使用Feign(服务调用)
 */
@EnableFeignClients
public class EurekaclientApplication {

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

3. 编写一个接口

/**
 * FeignClient声明当前接口为Feign的客户端
 *   当前接口就具备了发送HTTP请求的能力
 *
 * FeignClient(value = "SpringBoot-Cloud")  vlaue = 为被调用服务的名字
 */
@FeignClient(value = "SpringBoot-Cloud")
public interface userfeign {
    /***
     * 定义服务调用的方法
     *
     * 当前方法对应被调用的方法-->>需添加@GetMapping注解  参数为被调用方法的路径(全路径)
     * 且方法的形参和返回值类型必须和被调用方法一致
     *
     * 注意! 因为请求方式为Rest风格 所以参数前必须加 @RequestParam注解
     * @param id
     * @return
     */
    @GetMapping("getidpost")
    String getproductbyid(@RequestParam Integer id);
}

4. conterller控制层服务

@RestController
public class Clientterller {
    @Autowired
    private userfeign userfeign; // 自动注入接口对象

    @GetMapping("userConterller")
    public String userConterller(Integer id){
        /**
         * 和使用其他接口一样, 使用Feign接口中的服务方法
         *
         * 服务调用细节,如 请求的发送 负载均衡 都被封装了
         */

        return "用户服务调用成功: \t"+userfeign.getproductbyid(id);
    }
}

5. 打开Feign的日志功能

# 入口类
    @Bean
    public Logger.Level Configuration(){
        /**
         * Feign的日志配置有四种:
         *
         * --NONE 不记录日志
         * --BASIC 仅仅记录请求方法, url, 响应状态码, 执行时间
         * --HEADERS 记录Basic级别的基础上, 记录请求和响应的header
         * --FULL 记录请求和响应的header, body和元数据
         */
        return Logger.Level.FULL;
    }

# 配置文件
# Feign日志服务配置
logging:
  level:
    # 全局日志
    # root: debug
    # 配置服务调用类的所在的包名
    eurekaclient.eurekaclient.Service: debug
    eurekaclient.eurekaclient.Conterller: debug
posted @ 2020-12-23 15:07  花红  阅读(159)  评论(0)    收藏  举报