Tipsy/javalin:一个简单的Java和Kotlin微服务Web框架


Javalin 是一个非常轻量级的 Kotlin 和 Java 网络框架,支持 WebSockets、HTTP2 和异步请求。Javalin 的主要目标是简单性、出色的开发人员体验以及 Kotlin 和 Java 之间一流的互操作性。
Javalin 更像是一个库而不是一个框架。一些关键点:

  • 你不需要扩展任何东西
  • 没有@Annotations
  • 没有反射
  • 没有其他魔法;只是代码。

Maven:
<dependency>
    <groupId>io.javalin</groupId>
    <artifactId>javalin</artifactId>
    <version>4.0.0</version>
</dependency>

java:

import io.javalin.Javalin;

public class HelloWorld {
    public static void main(String[] args) {
        Javalin app = Javalin.create().start(7000);
        app.get("/", ctx -> ctx.result("Hello World"));
    }
}

Kotlin:

import io.javalin.Javalin

fun main() {
    val app = Javalin.create().start(7000)
    app.get("/") { ctx -> ctx.result("Hello World") }
}

Javalin 有一个 OpenAPI (Swagger) 插件。文档可以通过 DSL 和注释启用,Javalin 可以使用 SwaggerUI 和 ReDoc 呈现文档。
启动类似SpringBoot的微服务API:

val app = Javalin.create { config ->
    config.defaultContentType = "application/json"
    config.autogenerateEtags = true
    config.addStaticFiles(
"/public")
    config.asyncRequestTimeout = 10_000L
    config.dynamicGzip = true
    config.enforceSsl = true
}.routes {
    path(
"users") {
        get(UserController::getAll)
        post(UserController::create)
        path(
":user-id") {
            get(UserController::getOne)
            patch(UserController::update)
            delete(UserController::delete)
        }
        ws(
"events", userController::webSocketEvents)
    }
}.start(port)