Javalin 从 3 到 4 的迁移

Javalin Migration from 3 to 4

我们正在将我们当前的 kotlin 项目中的 Javalin 从 3 迁移到 4。 dynamicGzip 已被弃用并替换为压缩策略。 pom.xml 部分如下所示。

<properties>      
  <javalin.version>4.1.1</javalin.version>
  <jackson.version>2.13.0</jackson.version>
</properties>

kotlin的代码部分如下

import io.javalin.Javalin
import io.javalin.apibuilder.ApiBuilder.*
import io.javalin.http.BadRequestResponse
import io.javalin.http.NotFoundResponse
import io.javalin.http.staticfiles.Location
import io.javalin.plugin.json.JavalinJackson
import io.javalin.core.compression.*

val app = Javalin.create { config ->
        config.defaultContentType = "application/json"
        config.enableWebjars()
        config.addStaticFiles("", Location.CLASSPATH)
        config.enableCorsForAllgOrigins()
        //it.dynamicGzip = true // deprecated method which was used in 3.12.0
        config.compressionStrategy(Gzip(6))
    }

我们正在使用此 link 中的迁移文档 https://javalin.io/migration-guide-javalin-3-to-4

当我们尝试使用此更改在 intelij Idea 中构建项目时,出现以下错误。

 D:\app\src\main\kotlin\app\app.kt:78:40
 Kotlin: Unresolved reference: Gzip

我们在这里缺少什么?

此外,如果 config.addStaticFiles 语法也添加到 javalin 4

中,这将很有帮助

压缩

JavalinConfigclass的compressionStrategy方法有两个参数:

void compressionStrategy(Brotli brotli, Gzip gzip)

请参阅 Java文档 here

相关 classes 可在 Javalin 此处找到:

import io.javalin.core.compression.Brotli;
import io.javalin.core.compression.Gzip;

所以,你可以在你的设置中做这样的事情(我的例子是 Java 而不是 Kotlin):

// my Java example:
config.compressionStrategy(new Brotli(6), new Gzip(6));

静态文件

您可以使用这样的东西(同样,Java 示例不是 Kotlin):

// my Java example:
config.addStaticFiles("/public", Location.CLASSPATH);

在这种情况下,因为我希望我的文件位于运行时 class 路径上,所以我还在应用程序的 resources 目录中创建了一个 public 目录。您的具体实施可能有所不同。

如果愿意,您也可以使用 Location.EXTERNAL 将文件放置在文件系统的其他位置(在应用程序之外)。


请注意 config.enableCorsForAllgOrigins() 中还有一个小错字。应该是:

config.enableCorsForAllOrigins()