有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步, 认准 https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java 面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。https://store.amazingmemo.com/chapterDetail/1685324709017001`
支持 Json 字符串参数的泛化调用
背景
对于 Dubbo 泛化调用,提供一种新的方式:直接传递字符串来完成一次调用。即用户可以直接传递参数对象的 json 字符串来完成一次 Dubbo 泛化调用。
示例
通过 API 方式使用 Json 泛化调用
对于以下 provider:
1 2 3 4
| public User setUser(User user) { return user; }
|
用到的实体类:
1 2 3 4 5 6
| @Data public class User { String name; int age; }
|
进行一次泛化调用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| public class GenericInvoke { public static void main(String[] args) { ApplicationConfig app = new ApplicationConfig("ConsumerTest"); RegistryConfig reg = new RegistryConfig("nacos://localhost:8848");
DubboBootstrap bootstrap = DubboBootstrap.getInstance(); bootstrap.application(app); bootstrap.registry(reg); bootstrap.start();
try { ReferenceConfig<GenericService> reference = new ReferenceConfig<>(); reference.setInterface("com.xxx.api.service.TestService"); reference.setGroup("dev"); reference.setVersion("1.0"); reference.setRetries(0); RpcContext.getContext().setAttachment("generic","gson"); reference.setGeneric(true); reference.setCheck(false); GenericService genericService = ReferenceConfigCache.getCache().get(reference); Object res = genericService.$invoke("setUser", new String[]{"com.xxx.api.service.User"}, new Object[]{"{'name':'Tom','age':24}"}); System.out.println("result[setUser]:"+res); } catch (Throwable ex) { ex.printStackTrace(); } } }
|