文件

§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 Cluster 中啟動分片式型態的 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 的新 Typed 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,表示不會設定 Lang Cookie 的最大年齡。

§gzip 篩選器的閥值

如果啟用 gzip 篩選器,現在可以設定一個位元組閥值來控制根據回應主體大小壓縮哪些回應。為此,請在 application.conf 中新增下列設定

play.filters.gzip.threshold = 1k

主體大小等於或小於給定位元組閾值的回應不會被壓縮,因為壓縮後的大小會大於原始主體。

如果無法確定主體大小(例如分塊回應),則假設回應超過閾值。

預設情況下,閾值設定為 0(零)以壓縮所有回應,無論回應主體大小為何。

請參閱 gzip 篩選器頁面 以取得更多詳細資訊。

下一步:遷移指南


在這個文件中發現錯誤嗎?此頁面的原始程式碼可以在 這裡 找到。在閱讀 文件指南 後,請隨時貢獻一個拉取請求。有問題或建議要分享嗎?前往 我們的社群論壇 與社群展開對話。