原文链接:https://dzone.com/articles/spring-webflux-kotlin-dsl-snippets

作者:Biju Kunjummen

译者:Jackie Tang

如果您还没有玩转Spring Webflux,那么可以使用基于kotlin的DSL开发一个函数式API。

Spring Webflux最近 介绍一个特性来定义函数式API,它使用一个非常直观的基于 Kotlin的 DSL。

这篇文章将简单地展示一组具有鲜明对比的定义API的方式,一个是基于java流畅的API,一个是基于Kotlin的DSL。

在Java中,使用函数式编程风格来定义一组CRUD的Spring Webflux API,代码通常是这样的:

RouterFunction<?> apis() {return nest(path("/hotels"), nest(accept(MediaType.APPLICATION_JSON),route(GET("/"), messageHandler::getMessages).andRoute(POST("/"), messageHandler::addMessage).andRoute(GET("/{id}"), messageHandler::getMessage) .andRoute(PUT("/{id}"), messageHandler::updateMessage) .andRoute(DELETE("/{id}"), messageHandler::deleteMessage) )); } 

这些API的细节非常清楚,并且以一种流畅的方式定义,只有几个关键字——route、nest和HTTP行为。

这些API也可以使用基于kotlin的DSL(以及一些巧妙地使用Kotlin扩展函数),用下面的方式来实现:

@Bean
fun apis() = router {(accept(APPLICATION_JSON) and "/messages").nest {GET("/", messageHandler::getMessages)POST("/", messageHandler::addMessage)GET("/{id}", messageHandler::getMessage)PUT("/{id}", messageHandler::updateMessage)DELETE("/{id}", messageHandler::deleteMessage)}
}

我觉得这比基于java的DSL在可读性方面要好一些。如果这个API更加复杂,譬如Sébastien Deleuze所演示的精彩例子中所示,有多个层次的嵌套,这时基于kotlin DSL的优势就发明显了。

在下一篇文章中,我将深入研究这种支持是如何实现的。
这个示例在 my GitHub repo here可以找到。

本文由spring4all.com翻译小分队创作,采用 知识共享-署名-非商业性使用-相同方式共享 4.0 国际 许可 协议进行许可。

http://www.spring4all.com/article/1131

转载于:https://www.cnblogs.com/softidea/p/9063334.html

Spring Webflux: Kotlin DSL [片断]相关推荐

  1. Spring Webflux – Kotlin DSL –实现的演练

    在先前的博客文章中,我描述了Spring Web Framework中的响应式编程支持Spring Webflux如何使用基于Kotlin的DSL使用户能够以非常直观的方式描述路由. 在这里,我想探索 ...

  2. kotlin dsl_Spring Webflux – Kotlin DSL –实现的演练

    kotlin dsl 在以前的博客文章中,我描述了Spring Web Framework中的响应式编程支持Spring Webflux如何使用基于Kotlin的DSL使用户能够以非常直观的方式描述路 ...

  3. Kotlin 和Spring WebFlux

    Kotlin 是一种来自JetBrains 的面向对象的语言,它支持函数式编程.它的主要优势之一是与Java 有非常高的互操作性.通过引入对Kotlin 的专门支持,Spring 在V5 中全面吸纳了 ...

  4. Kotlin 协程 + Spring webflux 开发后端

    前言 后端响应式是未来,吞吐量会更大,而资源占用更少,其用到了类似Android系统的Loop(事件循环)机制,而协程可以减少线程等待的消耗,并且同步式的编程方式使代码可读性更高,两个仿佛天生就是一对 ...

  5. Kotlin 使用 Spring WebFlux 实现响应式编程

    Kotlin 使用 Spring WebFlux 实现响应式编程 IBM的研究称,整个人类文明所获得的全部数据中,有90%是过去两年内产生的.在此背景下,包括NoSQL,Hadoop, Spark, ...

  6. Spring BOOT ( 基于Kotlin 编程语言) 使用 Spring WebFlux 实现响应式编程

    Spring BOOT ( 基于Kotlin 编程语言) 使用 Spring WebFlux 实现响应式编程 image.png 参考文档:https://docs.spring.io/spring/ ...

  7. Spring Boot 2.0 with Spring 5 Kotlin support and Spring WebFlux functional

    Spring Boot 2.0 with Spring 5 Kotlin support and Spring WebFlux functional

  8. aws dynamodb_带有AWS DynamoDB的React式Spring Webflux

    aws dynamodb AWS已经发布了Java版本2的AWS开发工具包 ,该开发工具包现在支持针对不同AWS服务的API调用的非阻塞IO. 在本文中,我将探讨如何使用AWS开发工具包2.x的Dyn ...

  9. corda_使用Spring WebFlux从Corda节点流式传输数据

    corda 自上次发布以来已经有一段时间了,但我终于回来了! 由于我仍在我的项目中,因此我将再次撰写有关使用Corda的文章. 这次,我们将不再关注Corda,而是将Spring与Corda结合使用. ...

最新文章

  1. 未来的全能保姆机器人作文_保姆机器人作文500字
  2. linux 系统监控 php,Linux系统资源监控命令简介
  3. 牛逼的python代码_牛逼了!Python代码补全利器,提高效率告别996!
  4. 洛谷P1678-烦恼的高考志愿
  5. yuv420p 详解_Android中的YUV格式解析
  6. BugkuCTF web2
  7. 高通qcc芯片天梯图_芯片性能天梯榜“爆冷”,骁龙888无法撼动麒麟9000的王位...
  8. 数据库-MySQL-高级查询-IN通配符LIKE
  9. 2021辽宁高考成绩查询公布,2021辽宁高考成绩什么时候出
  10. A股开盘:深证区块链50指数跌0.32%,118只概念股下跌
  11. 同为开发:有了分布式/高并发等这些Java项目经历,面大厂稳了!
  12. 网络中的哪些事儿(三)之我眼中的三层交换机
  13. Python抓取小说
  14. double除以int结果是int吗_游戏开发java中int可以用汉字吗?
  15. php实现事件监听与触发的方法
  16. python反编译_反编译 python
  17. Echarts实现双y轴(不同刻度)
  18. 禁用计算机中的u盘功能,电脑设置禁用U盘的四大方法 怎么让电脑无法使用U盘...
  19. 头条视频消重软件 安卓修改视频md5
  20. 设置line-height无效的解决办法

热门文章

  1. Java遍历Map对象的四种方法
  2. iOS开发之让你的应用“动”起来转写
  3. MySQL Index Condition Pushdown 原理与解析
  4. Linux客户机访问FTP服务器常见的问题及解决办法
  5. 邬贺铨:5G资费便宜10倍 WiFi覆盖更为重要
  6. Android的UI调优
  7. Jsp在Web.xml中的配置
  8. 《PhoneGap精粹:构建跨平台的移动App》——1.10节PhoneGap资源
  9. SAP ECC 6.0 ,R3 windows server 2003 安装分享 自学教程
  10. 关于Azure存储账户中存储虚拟机VHD文件的注意事项