在我们当前的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))
}我们使用来自这个链接https://javalin.io/migration-guide-javalin-3-to-4的迁移文档。
当我们试图用intelij的思想构建这个项目时,以下面的错误结束。
D:\app\src\main\kotlin\app\app.kt:78:40
Kotlin: Unresolved reference: Gzip我们在这里遗漏了什么?
此外,如果还添加了wrt 4,config.addStaticFiles语法也会有所帮助。
发布于 2021-12-28 16:39:28
压缩
compressionStrategy类的JavalinConfig方法有两个参数:
void compressionStrategy(Brotli brotli, Gzip gzip)请看JavaDoc 这里。
相关的类可以在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);在本例中,由于我希望我的文件位于运行时类路径上,所以我还在应用程序的public目录中创建了一个resources目录。您的具体实现可能有所不同。
如果您愿意,也可以使用Location.EXTERNAL,将文件放在文件系统中的其他地方(应用程序之外)。
注意,config.enableCorsForAllgOrigins()中还有一个小错误。它应该是:
config.enableCorsForAllOrigins()https://stackoverflow.com/questions/70502879
复制相似问题