探路jooby

2018-07-15  本文已影响0人  hohov

Web Framework Benchmarks Round 16 里发现一个厉害玩意

各大框架性能对比
Multiple queries这一项排第六哦
其他各项的表现也非常不错, 于是打开了官网
jooby官网

Jooby keeps it simple yet powerful.

吸引到我了, 一直很想用node那种方式写java web server!
看看GitHub
描述写着A modular micro web framework for Java and Kotlin
哈哈哈哈我爱kotlin, 走一个


行吧, 再来个helloworld
Kobby这个类是专为Kotlin写的, Java的话是继承的Jooby


App.kt

再走一个


console
Edge
Postman

看到没, 就是这么easy


接下来再回头看看这几个写法
github导下来的项目是这样的

class App : Kooby({
    get {
        val name = param("name").value("Kotlin")
        "Hello $name!"
    }
})

看起来就很先进啊, 直接在父类的构造方法里面传入get路由,点进去看看

constructor(init: Kooby.() -> Unit): this() {
    this.init()
}

次构造方法里面接受一个init, init的入参是Kobby类中的方法, 没有返回值
好吧我kotlin的火候还不够, 也是第一次见这种写法
好处就是我们可以在Kooby的构造器里面直接写对应的路由了, 像这样

class App : Kooby({
    get ("/hello") {"Hello world"}
    post ("/hello"){ "Hello there" }
})

看看Jooby中定义的这两个方法

fun get(pattern: String = "/", init: Request.() -> Any): Route.Definition {
  return get(pattern, {req-> req.init()})
}

fun post(pattern: String = "/", init: Request.() -> Any): Route.Definition {
  return post(pattern, {req-> req.init()})
}

都是接受两个参数, 一个pattern, 一个处理器, kotlin里面方法的最后一个参数是lambda时可以将lambda写到括号外面, 只有一个参数的话就可以去掉()了, 像官方demo的那个get{}一样

也可以自己写路由, 然后在App里引用

package starter.kotlin

import org.jooby.mvc.GET
import org.jooby.mvc.Path

@Path("/router")
class Router {
    @GET
    fun salute(): String {
        return "Hey , this is a router"
    }
}

然后是App.kt里面

class App : Kooby({
    use(Router::class)
})

这样就可以了, 写法真的神似node啊


console
Edge

今天就到这里了, 先埋个坑, 得闲做个不太具备参考意义的hellowold对比测试, 对比一下node, springmvc, webflux和jooby的性能(不知道何年何月)

上一篇 下一篇

猜你喜欢

热点阅读