§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
標頭指定的區段。請參閱 Java 和 Scala 文件中的更多詳細資訊。
§建置新增功能
由於 Akka 不允許混合版本,因此在將 Akka 模組新增到應用程式時,請務必為所有模組使用一致的版本。為了簡化此作業,play.core.PlayVersion
物件現在有一個 akkaVersion
變數,您可以在建置中使用它,如下所示
import play.core.PlayVersion.akkaVersion
libraryDependencies += "com.typesafe.akka" %% "akka-cluster" % akkaVersion
§Lang Cookie 最大年齡設定
現在可以設定語言 Cookie 的最大年齡。為此,請將下列內容新增到 application.conf
play.i18n.langCookieMaxAge = 15 seconds
預設情況下,設定為 null
,表示不會設定 Lang Cookie 的最大年齡。
§gzip 篩選器的閥值
如果啟用 gzip 篩選器,現在可以設定一個位元組閥值來控制根據回應主體大小壓縮哪些回應。為此,請在 application.conf
中新增下列設定
play.filters.gzip.threshold = 1k
主體大小等於或小於給定位元組閾值的回應不會被壓縮,因為壓縮後的大小會大於原始主體。
如果無法確定主體大小(例如分塊回應),則假設回應超過閾值。
預設情況下,閾值設定為 0
(零)以壓縮所有回應,無論回應主體大小為何。
請參閱 gzip 篩選器頁面 以取得更多詳細資訊。
下一步:遷移指南
在這個文件中發現錯誤嗎?此頁面的原始程式碼可以在 這裡 找到。在閱讀 文件指南 後,請隨時貢獻一個拉取請求。有問題或建議要分享嗎?前往 我們的社群論壇 與社群展開對話。