dynamic-feign
implementation 'com.github.linyuzai:dynamic-feign:0.3.1'
将@EnableFeignClients替换成@EnableDynamicFeignClients来支持动态配置
动态配置类
public static class ConfigurableFeignClientEntity {
/**
* 微服务名称
*/
private String key;
/*
* 格式为http://key,相当于feign的默认实现,支持负载均衡
*/
private String inUrl;
/**
* 指定的url
*/
private String outUrl;
/**
* 是否使用指定outUrl
*/
private boolean feignOut;
/**
* 是否映射方法指定url
*/
private boolean feignMethod;
/**
* 方法与url的映射关系
*/
private Map<String, String> methodUrls;
/*
* get set
* ......
*/
}
动态配置接口
| 功能 | 方式 | 代码 | 必传字段 | 其他 |
|---|---|---|---|---|
| 查询配置 | 代码 | DynamicFeignClientMapper.getFeignClientEntities(); |
||
| 更新配置 | 代码 | DynamicFeignClientMapper.update(ConfigurableFeignClientEntity); |
key |
只能修改outUrl,feignOut,feignMethod |
| 添加方法对应的url | 代码 | DynamicFeignClientMapper.addMethodUrl(key, methodName, url); |
key,methodName,url |
相同的methodName会覆盖 |
| 移除方法对应的url | 代码 | DynamicFeignClientMapper.removeMethodUrl(key, methodName); |
key,methodName |
|
| 清空方法对应的url | 代码 | DynamicFeignClientMapper.clearMethodUrl(key); |
key |
|
| 查询配置 | 接口 | /dynamic-feign/config[GET] |
||
| 更新配置 | 接口 | /dynamic-feign/config[POST] |
key |
只能修改outUrl,feignOut,feignMethod |
| 添加方法对应的url | 接口 | /dynamic-feign/method-url/add[POST] |
key,methodName,url |
相同的methodName会覆盖 |
| 移除方法对应的url | 接口 | /dynamic-feign/method-url/remove[POST] |
key,methodName |
|
| 清空方法对应的url | 接口 | /dynamic-feign/method-url/clear[POST] |
key |
@EnableDynamicFeignClients的额外属性
@EnableDynamicFeignClients(outUrl = "http/https://ip:port/prefix")用于统一配置outUrl@EnableDynamicFeignClients(feignOut = true)用于统一配置feignOut,为true时需要同时配置outUrl,默认为false@EnableDynamicFeignClients(feignMethod = true)用于统一配置feignMethod,默认为false@EnableDynamicFeignClients(urlConcat = UrlConcat)用于配置outUrl的拼接规则,NONE不拼接,SERVICE_LOWER_CASE拼接小写服务名,SERVICE_UPPER_CASE拼接大写服务名,默认SERVICE_LOWER_CASE@EnableDynamicFeignClients(encoderWrapper = EncoderWrapper)用于配置EncoderWrapper@EnableDynamicFeignClients(decoderWrapper = DecoderWrapper)用于配置DecoderWrapper
配置文件属性
- 优先级大于
@EnableDynamicFeignClients dynamic-feign.out-url可代替@EnableDynamicFeignClients(outUrl = "http/https://ip:port/prefix")dynamic-feign.feign-out可代替@EnableDynamicFeignClients(feignOut = true)dynamic-feign.feign-method可代替@EnableDynamicFeignClients(feignMethod = true)dynamic-feign.encoder-wrapper="com.github.linyuzai.dynamicfeign.wrapper.EncoderWrapper"可代替@EnableDynamicFeignClients(encoderWrapper = EncoderWrapper)dynamic-feign.decoder-wrapper="com.github.linyuzai.dynamicfeign.wrapper.DecoderWrapper"可代替@EnableDynamicFeignClients(decoderWrapper = DecoderWrapper)
Version logs
v0.3.2(unpublished)
- 将lambda模块移出至单独的项目
v0.3.1
- 修复0.3.0版本的jar包问题
- 添加
EncoderWrapper和DecoderWrapper - 支持lambda配置methodUrl
v0.3.0
- 新增配置文件代替
@EnableDynamicFeignClients统一配置outUrl,feignOut,feignMethod - 新增根据class获得feign和更新feign
- 获得feign由通过实例方法改为通过静态方法
- 修复out复用一直为null的bug
- 删除@SpringBootApplication避免包名相同重复扫描注解
v0.2.1
- 新增
UrlConcat指定统一outUrl的拼接方式 - 修复统一
outUrl未拼接服务名的bug
v0.2.0
- 支持注解统一配置所有feign的
outUrl,feignOut,feignMethod - 复用相同url的feign
- 如果url格式不标准则修改url,更方便复用
v0.1.0
- 提供
@EnableDynamicFeignClients支持@FeignClient - 默认注入服务间负载均衡的feign(
inUrl) - 支持动态配置feign的额外url(
outUrl) - 支持方法级别的配置,可通过
(methodName,url)来指定每个feign对应方法调用的url