超轻量级框架 Next 发布 3.0.0.0-DEBUG 版本
Cloudopt Next 是一个非常轻量级且现代的、基于 Kotlin 编写的全栈开发框架,同时支持 Java 和 Kotlin,您可以处理Url的解析,数据的封装,Json的输出等等,从根本上减少开发时间、提升开发体验。
Cloudopt Next 主要拥有以下特点:
简单 极简设计,几乎不要任何配置,不依赖 Tomcat、Jetty 等 Web 容器。
异步 基于 vertx 轻松实现高性能的异步服务。
扩展 支持 vertx 体系的各种组件,同时支持通过插件扩展功能,官方也提供了大量好用的插件。
中文 全中文文档、中文社区,帮助中文开发者快速上手。
最新版本
目前 3.0.0.0 在开发阶段,你可以直接修改 Maven 配置或 Gradle 中的依赖版本号为以下版本号即可体验最新功能。
3.0.0.0-DEBUG
依赖升级
在 3.0.0.0 中对一些基础依赖进行了全面升级, JDK 升级到 11、Vertx 升级到 4.0.0、Kotlin 升级到 1.4.0。
反射重构
对使用 Java 的开发者来说影响不大,主要是提升了 Kotlin 开发者的开发体验。
在新版中,对大部分的反射、扫描注解进行了重构。原本是使用 Java 原生的反射操作,现在全部改为了 Kotlin 原生的反射操作。改为 Kotlin 原生语法后对 Kotlin 的基础类型的支持更加友好、也避免了 Kotlin 类转回 Java 类的开销。
Classer 工具类中也进行了大量的修改,原本对指定包扫描出的 Class 都改为了 扫描出 KClass。
ClassLoader::class.java.classLoader.loadClass(className) ClassLoader::class.java.classLoader.loadClass(className).kotlin
原本是通过 Beanner.newInstance 对扫描的类进行初始化(工具类暂未移除,建议不再使用),现在不再需要了,直接通过 KClass 中的原生方法创建实例。
handlers.add(Beaner.newInstance(clazz)) handlers.add(clazz.createInstance() as Handler)
获取注解也不再需要额外的判断是否为 null,现在会直接通过 findAnnotation 获取到注解。
val websocketAnnotation: WebSocket = clazz.getDeclaredAnnotation(WebSocket::class.java) val websocketAnnotation: WebSocket? = clazz.findAnnotation<WebSocket>()
判断注解是否存在,也改为了 Kotlin 原生语法。
m.getAnnotation(AfterEvent::class.java) != null resourceTable.clazzMethod.hasAnnotation<AfterEvent>()
我们还对请求进入时调用路由方法进行了优化,原本时先需要拿到路由方法所在的类再通过方法名反射操作,现在是再扫描时就会保存 KFunction,直接调用使用。
resourceTable.clazzMethod.callBy(arr)
对路由方法参数注入上也进行了优化,原本是每一次获取参数注入的时候会创建一次 Json 对象,现在是每一次请求只创建一次,有效减少了开销。
getParaByType(para.getAnnotation(Parameter::class.java).value, para, controllerObj)?.let { arr.add(it)} val jsonObject:JSONObject = JSONObject.toJSON(controllerObj.getParams()) as JSONObject getParaByType(para.findAnnotation<Parameter>()?.value, para, jsonObject)?.let { arr.put(para,it) }
其次是在注入处理之前就已经保存了 Parameter 类,不再需要在注入参数时重新获取参数的类型了。以及 @Parameter 注解中的 value 不再是必填项,如果不填会自动使用变量名称。
JsonProvider 接口也进行了修改,将原本参数类型为 Class 的都改为了 KClass。DefaultJSONProvider 、Jsoner 也进行了同样的修改。
fun toObject(jsonString: String, clazz: Class<*>): Any fun toObject(jsonString: String, clazz: KClass<*>): Any
WebSocket 更新
请使用以下新的用法。现在支持更优雅的用法,只需要继承 WebSocketResource 并实现相应的方法即可。
@WebSocket("/websocket") class WebSocketHandler : WebSocketResource { override fun onConnectionSuccess(websocket: ServerWebSocket) { websocket.writeTextMessage("Connection successful!") { println("The event of after write.") } val buffer: Buffer = Buffer.buffer().appendInt(123).appendFloat(1.23f) websocket.writeBinaryMessage(buffer) { println("The event of after write binary.") } } override fun onConnectionFailure(throwable: Throwable) { } override fun onConnectionComplete(websocket: ServerWebSocket) { } override fun onFrameMessage(frame: WebSocketFrame, websocket: ServerWebSocket) { println(frame.textData()) websocket.writeTextMessage("This is the message from the server!") } override fun onTextMessage(message: String, websocket: ServerWebSocket) { println(message) websocket.writeTextMessage("This is the message from the server!") } override fun onBinaryMessage(buffer: Buffer, websocket: ServerWebSocket) { } override fun onPingPong(buffer: Buffer, websocket: ServerWebSocket) { println("Pong...") } override fun onException(throwable: Throwable, websocket: ServerWebSocket) { throwable.printStackTrace() if (!websocket.isClosed) { websocket.close() } } override fun onDrain(websocket: ServerWebSocket) { } override fun onEnd(websocket: ServerWebSocket) { println("Connection was closed.") } }
Redis 插件
原本实现的异步的 redis 插件正式从 redis 包中去除,之后可能会出一个专门供异步使用的 redis 插件。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
DBShop 商城系统 V3.0 RC 201211 发布
系统简介 DBShop企业级商城系统,使用PHP语言基于Laminas(Zendframework 3) + Doctrine 2 组合框架开发完成。可定制、多终端、多场景、多支付、多货币;严谨的安全机制,可靠稳定;方便的操作管理,节约时间;清晰的权限分配,责任分明;便捷的更新处理,一键搞定;丰富的插件市场,扩展无限。 系统框架 Laminas (Zendframework 3) Doctrine 2 环境要求 服务器系统Linux、Unix、Mac、Windows、其他 web服务器Apache、Nginx、IIS、其他 MySQL版本>= 5.6 PHP版本>= 7.2 PHP扩展|库 PDO SSL(openssl) Fileinfo intl Curl GD2 系统空间>= 500M 更新日志: 添加 PC端 繁体、英文、日文、韩文 语言包,手机端也有对应语言包 更新手机模板即可 修正 后台商品添加或者编辑时,设置规格,在某些规格组排序情况下,保存后,前台商品详情内无法正常选择规格商品 修正 后台商品编辑与添加 图片无法取消切换 修正 后台首页授权显示 修正 ...
- 下一篇
mica 2.1.0-GA 发布,mica-http 组件添加流上传
一、mica(云母) mica 由如梦技术内部的 lutool(撸秃) 演变而来。lutool 诞生于 2017 年,受 jhipster 启发逐步形成一个微服务的核心集。 因 lutool 名称与功能不太符合,故在2019年开源时将其改名为 mica(云母),寓意为云服务的基石。 二、mica 2.x核心依赖 mica 基于 java 8,没有历史包袱,支持传统 Servlet 和 Reactive(webflux)。采用 mica-auto 自动生成 spring.factories 和 spring-devtools.properties 配置,仅依赖 Spring boot、Spring cloud 全家桶,无第三方依赖。市面上鲜有的微服务核心组件。 依赖 版本 Spring Boot 2.3.x 三、更新说明(累积更新) v2.1.0-GA - 2020-12-13 ✨ mica-bom 添加 mica-weixin。 ✨ mica-redis 添加 redis key 失效事件配置。 ✨ mica-swagger 添加 SwaggerCustomizer,用于自定义配置。...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7设置SWAP分区,小内存服务器的救世主
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS关闭SELinux安全模块
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题