§移除 GlobalSettings
如果您热衷于使用依赖注入,我们建议您尽可能地将 GlobalSettings 实现类中的代码移出。理想情况下,您应该能够重构代码,以便完全消除 GlobalSettings 类。
接下来是重构代码的逐方法指南。由于 Java 和 Scala 的 API 略有不同,请确保跳转到相应的子部分。
注意:如果您还没有阅读有关 Play 中的依赖注入的信息,请务必现在阅读。请按照相应的链接了解有关使用 Java 或 Scala 在 Play 中进行依赖注入的信息。
§Scala
- 
  GlobalSettings.beforeStart和GlobalSettings.onStart:现在,任何需要在启动时发生的事情都应该发生在依赖注入类的构造函数中。当依赖注入框架加载类时,该类将执行其初始化。如果您需要急切初始化(因为您需要在应用程序实际启动之前执行一些代码),定义一个急切绑定。
- 
  GlobalSettings.onStop:在需要注册停止钩子的类上添加对ApplicationLifecycle的依赖项。然后,将GlobalSettings.onStop方法的实现移到传递给ApplicationLifecycle.addStopHook的Future中。阅读 停止/清理 以了解更多信息。
- 
  GlobalSettings.onError:创建一个继承自HttpErrorHandler的类,并将GlobalSettings.onError的实现移到HttpErrorHandler.onServerError方法中。阅读 错误处理 以了解更多信息。
- 
  GlobalSettings.onRequestReceived:创建一个继承自HttpRequestHandler的类,并将GlobalSettings.onRequestReceived的实现移到HttpRequestHandler.handlerForRequest方法中。阅读 请求处理程序 以了解更多信息。
 请注意,如果您在GlobalSettings.onRequestReceived实现中调用super.onRequestReceived,那么您应该继承自DefaultHttpRequestHandler而不是HttpRequestHandler,并将所有对super.onRequestReceived的调用替换为super.handlerForRequest。
- 
  GlobalSettings.onRouteRequest: 创建一个继承自DefaultHttpRequestHandler的类,并将GlobalSettings.onRouteRequest方法的实现移到DefaultHttpRequestHandler.routeRequest方法中。阅读 请求处理程序 以获取更多信息。
- 
  GlobalSettings.onRequestCompletion: 此方法已弃用,并且不再由 Play 调用。相反,创建一个自定义过滤器,将onDoneEnumerating回调附加到返回的Enumerator结果上。阅读 Scala Http 过滤器 以了解如何创建 http 过滤器。
- 
  GlobalSettings.onHandlerNotFound: 创建一个继承自HttpErrorHandler的类,并为HttpErrorHandler.onClientError提供实现。阅读 错误处理 以获取更多信息。
 请注意,HttpErrorHandler.onClientError在参数中接受一个statusCode,因此您的实现应该归结为
if(statusCode == play.api.http.Status.NOT_FOUND) {
  // move your implementation of `GlobalSettings.onHandlerNotFound` here
}
- GlobalSettings.onBadRequest: 创建一个继承自- HttpErrorHandler的类,并为- HttpErrorHandler.onClientError提供实现。阅读 错误处理 以获取更多信息。
 请注意,- HttpErrorHandler.onClientError在参数中接受一个- statusCode,因此您的实现应该归结为
if(statusCode == play.api.http.Status.BAD_REQUEST) {
  // move your implementation of `GlobalSettings.onBadRequest` here
}
- 
  GlobalSettings.configure和GlobalSettings.onLoadConfig: 在您的配置文件中指定所有配置,或创建您自己的 ApplicationLoader(参见 GuiceApplicationBuilder.loadConfig)。
- 
  GlobalSettings.doFilter: 创建一个继承自HttpFilters的类,并为HttpFilter.filters提供实现。阅读 Http 过滤器 以获取更多信息。
此外,请注意,如果您的 Global 类混合了 WithFilters 特性,您现在应该创建一个继承自 HttpFilters 的 Filter 类,并将它放在空包中。阅读 这里 以获取更多详细信息。
§Java
- 
  GlobalSettings.beforeStart和GlobalSettings.onStart: 现在,任何需要在启动时发生的事情都应该发生在依赖注入类的构造函数中。当依赖注入框架加载类时,类将执行其初始化。如果您需要急切初始化(例如,因为您需要在应用程序实际启动之前执行一些代码),定义一个急切绑定。
- 
  GlobalSettings.onStop: 在需要注册停止挂钩的类上添加对ApplicationLifecycle的依赖关系。然后,将GlobalSettings.onStop方法的实现移到传递给ApplicationLifecycle.addStopHook的Promise中。阅读 停止/清理 以获取更多信息。
- 
  GlobalSettings.onError: 创建一个继承自HttpErrorHandler的类,并将GlobalSettings.onError的实现移到HttpErrorHandler.onServerError方法中。阅读 错误处理 以获取更多信息。
- 
  GlobalSettings.onRequest: 创建一个继承自DefaultHttpRequestHandler的类,并将GlobalSettings.onRequest方法的实现移到DefaultHttpRequestHandler.createAction方法中。阅读 请求处理程序 以获取更多信息。
- 
  GlobalSettings.onRouteRequest: 使用 Java API 时,此方法没有简单的迁移方法。如果需要此方法,则需要保留 Global 类一段时间。
- 
  GlobalSettings.onHandlerNotFound: 创建一个继承自HttpErrorHandler的类,并为HttpErrorHandler.onClientError提供实现。阅读 错误处理 以获取更多信息。
 请注意,HttpErrorHandler.onClientError在参数中接受一个statusCode,因此您的实现应该归结为
if(statusCode == play.mvc.Http.Status.NOT_FOUND) {
  // move your implementation of `GlobalSettings.onHandlerNotFound` here
}
- GlobalSettings.onBadRequest: 创建一个继承自- HttpErrorHandler的类,并为- HttpErrorHandler.onClientError提供实现。阅读 错误处理 以获取更多信息。
 请注意,- HttpErrorHandler.onClientError在参数中接受一个- statusCode,因此您的实现应该归结为
if(statusCode == play.mvc.Http.Status.BAD_REQUEST) {
  // move your implementation of `GlobalSettings.onBadRequest` here
}
- 
  GlobalSettings.onLoadConfig: 在配置文件中指定所有配置,或创建自己的 ApplicationLoader(参见 GuiceApplicationBuilder.loadConfig)。
- 
  GlobalSettings.filters: 创建一个继承自HttpFilters的类,并为HttpFilter.filters提供实现。阅读 HTTP 过滤器 以获取更多信息。
下一步:迁移 Anorm
发现此文档中的错误?此页面的源代码可以在 此处 找到。阅读完 文档指南 后,请随时贡献拉取请求。有疑问或建议要分享?前往 我们的社区论坛 与社区开始对话。