feign学习笔记

一、feign使用
(一)入门
原始RestTemplate访问远程http服务见链接https://blog.csdn.net/weixin_45390688/article/details/124303731
但是这样的实现并不优雅,可以使用下列方案代替。
在这里插入图片描述
3.
4.调用
在这里插入图片描述
(二)性能优化
feign本身性能已经非常优越,但是默认使用的是URLConnection,但是URLConnection并不支持连接池,所以为了进一步提升性能,可以使用支持连接池的Apache HttpClient
1.引入HttpClient依赖
在这里插入图片描述
2.在yml文件中配置连接池

feign:
  httpclient:
    enabled: true # 开启feign对HttpClient的支持
    max-connections: 200 # 最大的连接数
    max-connections-per-route: 50 # 每个路径的最大连接数

(三)使用中遇到的问题
1.传递多个参数问题
消费端
多个参数可以使用@RequestParam注解

@FeignClient(name = "userservice")
public interface UserFeignClient {
  @RequestMapping(value = "/test")
  public User get1(@RequestParam("id") Long id, @RequestParam("username") String username);
}

服务端

@RequestMapping("/test")
 public Student save(@RequestParam("id") Long id, @RequestParam("username") String username) {
 	User user = new User(id,username);
 	return user;  
}

2.传递对象问题
消费端
消费端feign接口的方法,需要注意两点,第一要加上@RequestBody注解,第二要加上method=RequestMethod.POST,feign默认是get请求,但是复杂参数请求应使用post方式

@FeignClient(name = "studentservice")
public interface StudentFeignClient {
	@RequestMapping(value="student/save",method=RequestMethod.POST)
	public Student save(@RequestBody Student student);
}

服务端
需要加上@RequestBody注解

@PostMapping("save")
 public Student save(@RequestBody Student student) {
    System.out.println(student);
   return StudentService.save(student);
}

二、feign最佳实践
(一)新建项目feign-api
1.引入feign依赖
2.见client api和pojo放入项目中
在这里插入图片描述
(二)消费端引入新项目的依赖

		<dependency>
            <groupId>cn.itcast.demo</groupId>
            <artifactId>feign-api</artifactId>
            <version>1.0</version>
        </dependency>

(三)修改消费端application启动类注解@EnableFeignClients
因为springboot只会识别扫描启动类所在的包目录,当引入其他jar包时,是不会识别到它的spring注解,也就不会把相关bean加入到IOC容器,解决办法有两个:
方式一是全部引入,方式二是精准引入
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值