SpringCloud-day2-Feign、Gateway

一、HTTP客户端Feign

1. Feign代替RestTemplate

RestTemplate发起远程调用的代码

String url = "http://user-service/user/" + order.getUserId();
User user = restTemplate.getForObject(url, User.class);

存在的问题:

  • 代码可读性差,编程体验不统一
  • 参数复杂URL难以维护

Feign:是一个声明式客户端,作用是帮我们实现http请求的发送,解决上面提到的问题

定义和使用Feign客户端:

  1. 引入依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    
  2. 在order-service的启动类添加注解开启Feign的功能

    @SpringBootApplication
    @EnableFeignClients	//开启Feign的功能
    public class OrderApplication {
         
    
        public static void main(String[] args) {
         
            SpringApplication.run(OrderApplication.class, args);
        }
    }
    
  3. 编写Feign客户端

    @FeignClient("user-service")
    public interface UserClient {
         
    
        @GetMapping("/user/{id}")
        User findById(@PathVariable Long id);
    
    }
    

    主要是基于SpringMVC的注解来声明远程调用的信息,如:

    • 服务名称:userservice
    • 请求方式:GET
    • 请求路径:/user/{id}
    • 请求参数:Long id
    • 返回值类型:User
  4. 调用Feign客户端实现远程调用

    @Service
    public class OrderService {
         
    
        @Resource
        private OrderMapper orderMapper;
    
        @Autowired
        private UserClient userClient;
    
        public Order queryOrderById(Long orderId) {
         
            // 1.查询订单
            Order order = orderMapper.findById(orderId);
            //2. 利用Feign发起http请求,查询用户
            User user = userClient.findById(order.getUserId());
            //3. 封装user到order
            order.setUser(user);
            return order;
        }
    
    }
    

2. 自定义配置

Feign运行自定义配置来覆盖默认配置,可修改的配置如下:

在这里插入图片描述

配置Feign日志有两种方式:

  • 方式一:配置文件方式

    • 全局生效:

      feign:
        client:
          config:
            default:	 # 此处为default对所有服务生效
              loggerLevel: FULL
      
    • 局部生效:

      feign:
        client:
          config:
            user-service: # 此处为服务名称只对该服务生效	
              loggerLevel: FULL
      
  • 方式二:通过java代码配置

    首先声明一个bean

    public class FeignClientConfiguration {
         
    
        @Bean
        public 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值