≡
导航
搜索
教程
插件
模型
模板
博客
交易
朋友
编程语言分享讨论总汇吧
已关注 | 取消
+关注
关注:
10
帖子:
1,222
签到
05月06日 尚未签到
看帖
图片
精品
视频
共有回帖数
0
个
基于RxJava的函数式Reactive Web框架:datamill
取消只看楼主
收藏
回复
幸福没有捷径
等级:
datamill是一个基于RxJava开发函数响应式风格的Java Web框架,可看成是SpringBoot竞争的框架,使用Java8和lambda,它不同于其他Java框架,使得通过整个应用的数据流和行为变为高度可见的,这样你不需要使用魔术效果元注释,使得很多效果隐藏在复杂的框架和文档后面,相反,你只要显式明确指定数据是如何在你的应用中流动,如何修改这些数据即可。只需要使用简单的RxJava风格即可。
当你使用Spring框架时,虽然只需要很少代码就可以跑起来,但是当项目复杂以后,你会发现很多功能和行为被使用元注解隐藏在了框架和文档后面,变得难以捉摸和不确定性。但是你如果不想使用元注释,你会遇到阻碍,你需要调试数百行框架自身的代码以找出背后的原理机制,以及如何搞定框架以让它做你想做的事情。
看看datamill的简单代码:
datamill应用总是以标准的Java应用开始,可以明确地创建HTTP服务器,指定请求如何被处理,以及服务器监听端口,不像传统的JEE部署,你得配置servlet容器或应用服务器的配置,你只要启动这段服务器代码你就控制了一切,这也使得为这个服务器创建Docker容器变得很简单,只要使用Maven打包一个可执行的JAR包即可,放入标准的Java Dcoker容器即可。
当Http到达你的服务器,它是如何流过你的应用变得显著可见:
rb.ifMethodAndUriMatch(Method.GET, "/status", r - r.respond(b - b.ok()))
这一行代码说服务器首先检查请求应该是一个从URI为/status的GET请求,如果是,返回HTTP是ok的响应。
下面两行显示你能组织你的请求处理器,同时能够保持对请求之后如何处理也就是发生了什么情况保持可读性和可维护性。
.elseIfMatchesBeanMethod(outlineBuilder.wrap(new UserController()))
这段代码是说看看请求是否匹配UserController实例的一个处理方法,为了理解这个匹配工作原理,我们看看UserController的类,下面是处理请求的方法代码:
注意,这里精确SQL查询可自由组合,对于那些使用元注释产生查询语句的人来说,你会再次体会到清晰。
在一个简单应用中,查询中有很小比例需要超过JPA实现以外进行定制,几乎所有应用都有这种情况,这时你开始钻研框架内部代码时会变得非常消沉。
请注意这里数据是如何从查询结果中取出来放入实体的,最后注意代码还能保持怎样的精确,这些都是使用lambda和RxJava可观察操作的原因。
楼主 2016-07-24 16:12
回复
共有回帖数
0
个
回 帖
表情
图片
视频
欢迎来到本吧,您可以在此发帖和众多大咖交流学习.
选择或直接输入昵称
Tips:支持QQ截图直接粘贴
发表
登录直线网账号
自动登录
忘记密码
免费注册
本吧信息
查看详情
吧主:
禾木
本吧公告
好好学习,天天向上!
我常逛的吧
我管理的吧
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈
|
关于直线
|
版权声明
|
会员须知