SpringCloudAlibaba-Fegin

什么是Fegin

略 … …

解决了什么

解决了 代码不可读,复杂的URL 调用等问题
在这里插入图片描述

配置

1. +依赖
<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-openfeign</artifactId>
		<version>2.2.0.RELEASE</version>
</dependency>
2. 写注解
@SpringBootApplication
@EnableFeignClients
public class UserCenterApplication {
	public static void main(String[] args) {
		SpringApplication.run(UserCenterApplication.class, args);
	}
	@Bean
	@LoadBalanced
	public RestTemplate restTemplate(){
		return new RestTemplate();
	}
}
3. 写配置
	暂时没有配置

代码

创建 Fegin 接口存放的package
在这里插入图片描述
在 包内编写Fegin 调用的接口

/* 将要调用的服务的名字 */
@FeignClient(name = "user-serivce")
public interface UserCenterFeignClient {
	/* 调用服务的API */
    @GetMapping("/userService/Users")
    public List<User> getAllUser();
}

调用
在 Service层 调用 Fegin

 	@Autowired
    private UserCenterFeignClient userCenterFeignClient;
    @Autowired
    private DiscoveryClient discoveryClient;
    public List<User> getAllUser(){
        List<User> allUser = userCenterFeignClient.getAllUser();
        return allUser;
    }

问题: 这里使用Fegin,那么Ribbon的规则生效吗??
我们来查看我们代码打印的语句
在这里插入图片描述

Fegin的组成

fegin 由多个模块组成. 或者说接口组成.每个接口负责不同的部分


FeginBuilder: 每一个Fegin 都是由它构建的
Client: Fegin底层用什么去请求
Contract: 使Fegin 可以使用SpringMvc的注解
Encoder: 编码器.
Decoder: 解码器
Logger: 日志管理器
RequestInterceptor: 用于为每个请求添加通用逻辑. 拦截器

Fegin 细粒度配置

在这里插入图片描述

使用Java配置

此configuration用于配置Feign的各项配置

@FeignClient(name = "user-serivce",configuration = UserCenterFeignConfiguration.class)
public interface UserCenterFeignClient {
    @GetMapping("/userService/Users")
    public List<User> getAllUser();
}

注入:

public class UserCenterFeignConfiguration {
    @Bean
    public Logger.Level level(){
        // 打印所有请求的细节
        return Logger.Level.FULL;
    }
}

需要将 UserCenterFeignConfiguration 移动到父容器之外.
如果 UserCenterFeignConfiguration 添加了 @configuration 注解

logging:
  level:
    cn.nctwo.FeignClient.UserCenterFeignClient: DEBUG

这里的yml 的配置和java 代码 是一起配置的

属性配置

在这里插入图片描述

feign:
	client:
		config:
			# 想要调用微服务的名称
			user-center:
				loggerLevel: full

全局配置

Java代码配置

使用 父子上下文重叠配置 但是不建议

细粒度配置

在 SpringBoot 上的启动类注解 @EnableFeginCLients添加属性
在这里插入图片描述

@SpringBootApplication
@EnableFeignClients(defaultConfiguration = UserCenterFeignConfiguration.class)
public class UserCenterApplication {
}
public class UserCenterFeignConfiguration {
    @Bean
    public Logger.Level level(){
        // 打印所有请求的细节
        return Logger.Level.FULL;
    }
}

属性配置

feign:
	client:
		config:
			# 局部配置,这里写的是 服务名称
			# 全局配置,书写的是 default
			default:
				loggerLevel: full
全局配置,去掉SpringBoot启动类注解:
@EnableFeignClients(defaultConfiguration = UserCenterFeignClient.class)
后面的 defaultConfiguration 的值. 去掉括号内的即可.

优化

使用 HTTPClient 和 OKHttp 配置连接池,对fegin 进行优化

HttpClient

  1. 依赖
  2. 配置
    其中的连接池参数需要配合压力测试进行的修改
    在这里插入图片描述

OKHttp

  1. 依赖
    自己控制版本.SpringCloud没有将依赖给管理注
    在这里插入图片描述
  2. 配置
    在这里插入图片描述
    连接池的配置是一样的
    在这里插入图片描述

日志调整

日志级别设为 basic. 输出内容较少.也可以从这方面优化 fegin

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值