本篇文章为你整理了Feign(feign的底层原理)的详细内容,包含有feign和openfeign区别 feign的底层原理 feign是rpc框架吗 feignclient Feign,希望能帮助你了解 Feign。
Feign
Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign
1.引入依赖
!-- Feign客户端--
dependency
groupId org.springframework.cloud /groupId
artifactId spring-cloud-starter-openfeign /artifactId
/dependency
2.在消费者启动类开启Feign(添加注解)
@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
@EnableFeignClients //注解开启
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
@LoadBalanced
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
3.创建client文件,编写接口类
/**
* @Date 2022/10/30 19:17
* @Author 郜宇博
@FeignClient("userservice")
public interface UserClient {
* @param id userid
* @return User对象
@GetMapping("user/{id}")
User findById(@PathVariable("id") Long id);
4.使用
@GetMapping("{orderId}")
public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) {
// 根据id查询订单并返回
Order order = orderService.queryOrderById(orderId);
//调用接口==================
User user = userClient.queryById(order.getUserId());
//调用接口结束=====================
order.setUser(user);
return order;
并且feign已经集成了ribbon
2.性能优化
1.HttpClient支持
2.连接池
3.日志级别尽量用basic
feign底层的连接是没有连接池的,需要更换httpclient
!-- Feign-http--
dependency
groupId io.github.openfeign /groupId
artifactId feign-httpclient /artifactId
/dependency
连接池配置
feign:
httpclient:
enabled: true # 支持httpclient
3.实践使用
1.创建feign-api模块整合请求
2.引入依赖
!-- Feign客户端--
dependency
groupId org.springframework.cloud /groupId
artifactId spring-cloud-starter-openfeign /artifactId
/dependency
3.编写client接口和实体类
/**
* @Date 2022/10/30 19:17
* @Author 郜宇博
@FeignClient("userservice")
public interface UserClient {
* @param id userid
* @return User对象
* 11
@GetMapping("user/{id}")
User findById(@PathVariable("id") Long id);
4.在消费者pom文件中引入编写的feign-api工程
!-- feign-api--
dependency
groupId cn.itcast.demo /groupId
artifactId feign-api /artifactId
version 1.0 /version
/dependency
5.使用前注入client类
由于在其他工程中,因此无法直接注入,需要在启动类的注解中加入Client类
@Autowired
private UserClient userClient;
启动类中
6.使用
//调用接口==================
User user = userClient.queryById(order.getUserId());
//调用接口结束=====================
以上就是Feign(feign的底层原理)的详细内容,想要了解更多 Feign的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。