文档

§Play 2.8 中的新功能

本页重点介绍了 Play 2.8 的新功能。如果您想了解迁移到 Play 2.8 时需要进行的更改,请查看 Play 2.8 迁移指南

§Akka 2.6

Play 2.8 带来了最新版本的 Akka。虽然 Akka 2.6 与 2.5 具有二进制兼容性,但默认配置中存在一些更改,并且一些弃用的功能已被删除。您可以在 Akka 2.6 迁移指南 中查看有关更改的更多详细信息。

§Akka Typed

§Akka Typed 的集群分片

Play 2.8 为 Akka Cluster Sharding Typed 提供依赖注入支持,允许用户注入 ClusterSharding 实例并在 Akka 集群 中启动分片类型 Actor。

§Jackson 2.10 和新的 ObjectMapper 配置

Jackson 依赖项已更新至 最新次要版本 2.10

此外,Play 现在使用 Akka Jackson 支持来提供 ObjectMapper,而不是提供自己的创建和配置 ObjectMapper 的方法,这在 Play 2.8 之前需要用户编写自定义绑定。因此,现在可以使用 application.conf 添加 Jackson 模块 并配置 功能。例如,如果您想添加 Joda 支持,您只需添加以下配置

akka.serialization.jackson.play.jackson-modules += "com.fasterxml.jackson.datatype.joda.JodaModule"

如果您需要将数字写为字符串,请添加以下配置

akka.serialization.jackson.play.serialization-features.WRITE_NUMBERS_AS_STRINGS=true

§Guice 对 Akka Actor Typed 的支持

现有的 AkkaGuiceSupport 实用程序,它帮助绑定 Akka 的“经典”Actor,已经获得了额外的支持 Akka 2.6 的新 类型 Actor API 的方法。

以下是用 Scala 定义一个绑定 HelloActor 的 Guice 模块的快速示例:

object AppModule extends AbstractModule with AkkaGuiceSupport {
  override def configure() = {
    bindTypedActor(HelloActor(), "hello-actor")
  }
}

同样,在 Java 中,actor 扩展了 Akka 的 Java DSL AbstractBehavior

public final class AppModule extends AbstractModule
    implements AkkaGuiceSupport {
  @Override
  protected void configure() {
    bindTypedActor(HelloActor.class, "hello-actor");
  }
}

有关更多详细信息,请参阅 与 Akka Typed 集成

§Java 11 支持

Play 2.8.0 是我们正式支持 Java 11 的第一个版本。Play、其独立模块、示例和种子都针对 AdoptOpenJDK 8 和 11 进行了测试。我们继续支持 Java 8 作为默认版本。

§其他新增功能

§支持针对范围结果的预搜索源

在某些情况下,在返回包含 Range 标头的请求的结果时,可以预搜索 Source。例如,如果应用程序使用 Alpakka S3 连接器,它将有效地仅下载 Range 标头指定的节。有关更多详细信息,请参阅 JavaScala 文档。

§构建新增功能

由于 Akka 不允许混合版本,因此在将 Akka 模块添加到应用程序时,使用一致的版本对于所有模块都很重要。为了简化操作,play.core.PlayVersion 对象现在有一个 akkaVersion 变量,您可以在构建中使用它,例如:

import play.core.PlayVersion.akkaVersion

libraryDependencies += "com.typesafe.akka" %% "akka-cluster" % akkaVersion

现在可以为语言 Cookie 配置最大年龄。为此,请将以下内容添加到您的 application.conf 中:

play.i18n.langCookieMaxAge = 15 seconds

默认情况下,配置为 null,这意味着不会为语言 Cookie 设置最大年龄。

§gzip 过滤器的阈值

如果启用了 gzip 过滤器,现在可以设置字节阈值来控制根据其主体大小压缩哪些响应。为此,请在 application.conf 中添加以下配置:

play.filters.gzip.threshold = 1k

主体大小等于或小于给定字节阈值的响应将不会被压缩,因为压缩后的尺寸可能大于原始主体。

如果无法确定主体大小(例如,分块响应),则假定响应超过阈值。

默认情况下,阈值设置为0(零),以压缩所有响应,无论响应主体大小如何。

有关更多详细信息,请参阅gzip 过滤器页面

下一步:迁移指南


发现此文档中的错误?此页面的源代码可以在此处找到。阅读文档指南后,请随时贡献拉取请求。有疑问或建议要分享?转到我们的社区论坛,与社区开始对话。