降级FallBack类自动补全的Demo
Feign的服务降级中,一个有20个方法的Client,现在需要对一个方法降级处理, 但是fallback是类级别的定义,所以需要对其他19个也进行代码的编写.
业务方希望我能够解决他们这个问题
这个demo放到了github上: refine-class
需要回退的方法就抽出来和其他的隔离一下,但是业务方提出:
有些方法是发现风险后才决定加回退,那么发现问题就改代码,如果解决不了他们再考虑这种方案
有同事提出方案,通过一个代理类,所有回退都走该代理类, 代理类通过反射进行需要回退的代码调用
因为我不认同这种方案,没有深入思考
思路来源于lombok,mapstruct框架,编译期进行代码完善
mapstruct利用的freemarker模板引擎,实际demo中感觉太重了,直接参考spring-initializr项目进行实现类编写
MethodRetrievalProcessor
进行扫描,获取要填充的信息
-- 参考spring-initializr项目中对pom.xml的写入方法,写一个实现类AbstractEcho这个类在编译后生成了一个实现类; 将target中生成的实现类粘贴如下:
package io.eeaters.refine.example;
import io.eeaters.refine.example.entity.Result;
import org.springframework.stereotype.Component;
@Component
public class AbstractEchoImpl extends AbstractEcho {
public AbstractEchoImpl() {
}
public String echo(String var0) {
return null;
}
public Result<String> echo(Result<String> var0, String var1) {
return null;
}
}
RefineContext#buildMethodInfo
方法是在debug中写的, 不知道能不能经得起线上使用代码是在Idea中编写,Idea的debug过程如下:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。