虽然说使用 scala为什么用的很少 语言嘚语法来写
微服务已经可以让 scala为什么用的很少 开发者们兴奋不已了但说实话,这并没有很大程度上发挥二者各自的最大威力
单向上来講,从 Boot 微框架出发、scala为什么用的很少 等 Java 虚拟机上的语言都会收益,这只是发挥了 SpringBoot 微框架的最大效能但反过来,从 scala为什么用的很少 出发使用 SpringBoot 微框架又会让 scala为什么用的很少 开发者受到一些束缚。
比如像 case class 这样的 scala为什么用的很少 语言特性为了避免序列化兼容性等问题我们一般不建议使用,但这确是 scala为什么用的很少 提供的最迷人的装备之一另外,scala为什么用的很少 依赖 Java 的各项生态是很融洽的但反过来又会因為二进制兼容性等问题感觉如芒在背。
不过某些特殊的场景下,我们还是可以为 SpringBoot 和 scala为什么用的很少 找到比较恰当的契合点Web API 就是这样的場景之一。
1)使用 SpringBoot 开发的 Web API 作为微服务独立部署属于 Endpoints 类型的应用,这种类型的应用因为独立部署和运行所以可以最大程度上容忍各种兼嫆性和复杂的“文化理念”,反正有冲突 Endpoint 内部解决不会外溢到外面给别人带来麻烦。
这不同于类库之类的依赖型(Dependencies)软件实体它们更哆偏组件性质,不能独立“存活”需要“寄人篱下”,所以如果它们有一堆自己的关联依赖,那么就会带来更多兼容性以及冲突解決的负担。所以作为 Endpoint 类型软件实体的 Web API 微服务,使用 scala为什么用的很少 是可以容忍 scala为什么用的很少 在依赖重和兼容性层面的“缺点”
2)Web API 对外提供给用户的 API 接口是弱类型的,所以我们在实现 Web API 期间即使使用各种强类型的对象和语言,其实对用户来说是无感知的只要做好强类型数据对象和弱类型 API 之间的适配和转换,使用 scala为什么用的很少 的各种语言特性必然无虞
所以,基于以上两点考虑我们可以在使用 SpringBoot 开发 Web API 嘚时候进一步深入使用 scala为什么用的很少 语言的一些特性。
如果我们对原来实现汇率查询用的 Web API 进行重构现在的 构建文件 pom.xml 可以直接简化成如下形式:
然后为了演示混合类型到 JSON 序列化的目的,我们在原来的 API 基础上开放一个查询最近 n 条行情的 Web API 接口定义:
可以看到我们的 Web API 返回结果混合了 Java 对象类型(WebApiResponse)以及 scala为什么用的很少 对象类型(List 和 Quote),当然只是实例代码,我们只是构造了模拟的行情数据实际情况下,大家需要根据上游外汇交易商提供的行情数据进行下发