2.0.1 新特性介绍: 泛化调用

    java-chassis 很早就提供了泛化调用, 本文重点介绍 2.0.1 的功能。 2.0.1 对于泛化调用的接口进行了优化, 支持指定响应类型, 早期的版本的响应类型取决于运行上下文, 是不确定的。

    可以采用 InvokerUtils 访问这个服务:

    需要特别说明的是参数 , 这个参数是和 Provider 接口生成的契约对应的, 不关注 Provider 是采用透明 RPC, 还是 采用 Spring MVC , 或者 JAX RS 开发的服务。 需要注意 swaggerArguments 可能和 Provider 的接口定义的参数列表不一样,比如透明 RPC 开发模式下多个参数的场景, Spring MVC 的 Bean Param 的场景等等。

    2.0.1 版本之前的 API 不能够指定 , 因此返回值类型是不确定的, 这个取决于运行的上下文。 如果 Consumer 没有加载 任何 @RpcReference 信息, 并且不存在 Provider 返回值 Model , 那么返回值类型是 Map ; 否则返回结果可能是和 Provider 具备相同 package 类的实例, 这个返回接口的类型还可能和加载顺序有关。 由于这种不确定性, 早期的 API 使用 声明为废弃。 将 responseType 设置为 null , 能够获得和早期 API 一样的效果。