超轻量级框架 Next 发布 3.0.0.0-DEBUG 版本

栏目: 软件资讯 · 发布时间: 3年前

内容简介:Cloudopt Next 是一个非常轻量级且现代的、基于 Kotlin 编写的全栈开发框架,同时支持 Java 和 Kotlin,您可以处理Url的解析,数据的封装,Json的输出等等,从根本上减少开发时间、提升开发体验。 Cloudopt Next ...

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 插件。


以上所述就是小编给大家介绍的《超轻量级框架 Next 发布 3.0.0.0-DEBUG 版本》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Vim实用技巧

Vim实用技巧

[英] Drew Neil / 杨源、车文隆 / 人民邮电出版社 / 2014-5-1 / 59.00元

vim是一款功能丰富而强大的文本编辑器,其代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中得到非常广泛的使用。vim能够大大提高程序员的工作效率。对于vim高手来说,vim能以与思考同步的速度编辑文本。同时,学习和熟练使用vim又有一定的难度。 《vim实用技巧》为那些想要提升自己的程序员编写,阅读本书是熟练地掌握高超的vim技巧的必由之路。全书共21章,包括121个技巧。每一章......一起来看看 《Vim实用技巧》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具