Feign的介绍
Feign是一个声明式的http客户端,官方地址:Spring Cloud OpenFeign
定义和使用Feign
1.引入依赖
<!-- feign 客户端依赖(声明式服务调用) --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
2.在order-service的启动类添加注解开始Feign的功能
@MapperScan("cn.itcast.order.mapper") @SpringBootApplication //配置类 @EnableFeignClients(clients = {UserClient.class})// 指定需要加载的Client接口 public class OrderApplication { public static void main(String[] args) { SpringApplication.run(OrderApplication.class, args); } }
3.编写Feign客户端:
/** * Feign可以把Rest的请求进行隐藏,伪装成类似Spring MVC的Controller一样。不用再自己拼接url,拼接参数等等操作,一切都交给Feign去做 */ @FeignClient("userserver") public interface UserClient { @GetMapping("/user/{id}") User findById(@PathVariable("id") Long id);
}
主要基于SpringMVC的注解来声明远程调用的信息,
服务名称:userserver
请求方式:GET
请求路径:/user/{id}
请求参数:Long id
返回值类型:User
4.server调用
package cn.itcast.order.service; import cn.itcast.order.clients.UserClient; import cn.itcast.order.mapper.OrderMapper; import cn.itcast.order.pojo.Order; import cn.itcast.order.pojo.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; @Service public class OrderService { @Autowired private OrderMapper orderMapper; @Autowired private UserClient userClient; //基于Feign实现远程调用 public Order queryOrderById(Long orderId) { // 1.查询订单 Order order = orderMapper.findById(orderId); //2.用Feign远程调用 User byId = userClient.findById(order.getUserId()); //3.封装user到Order order.setUser(byId); // 4.返回 return order; } }
自定义Feign的配置
方式一:配置文件方式
1.全局生效
feign: #Feign日志 全局 client: config: default: #局部 切换服务名称 loggerLevel: FULL
2.局部生效
feign: #Feign日志 全局 client: config: userserver: #局部 切换服务名称 loggerLevel: FULL
方式二:java代码方式,需要先声明一个Bean:(创建包config)
public class DefaultFeignConfiguration { @Bean //配置日志 public Logger.Level feignLogLevel(){ return Logger.Level.BASIC; } }
全局配置
局部配置
Feign优化性能
Feign添加HttpClient的支持
引入依赖:
<!-- 引入HttpClient依赖 --> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-httpclient</artifactId> </dependency>
配置连接池:
feign: # Feign性能优化 httpclient: enabled: true # 支持HttpClient的开关 max-connections: 200 #最大连接数 max-connections-per-route: 50 #单个路径的最大连接数
标签:Feign,调用,itcast,cn,public,import,order,远程 From: https://www.cnblogs.com/qihaokuan/p/17796440.html