播放2.x @登录路线定义

kli*_*ron 4 scala routes playframework

我正在学习游戏!框架(2.3.x).我对路径定义中控制器前面的'@'字符的含义感到困惑,如下所示:

POST   /myresource/:id/custom   @controllers.MyResource.custom(id: Long)
Run Code Online (Sandbox Code Playgroud)

尽管我可以从我见过的上下文中推断出它,但它可能与确切的控制器实现(对象与类)有关.或者我完全错了?我在文档中找不到任何内容,我看到的代码并不完全是解释性的.谁能解释一下?

rig*_*old 5

根据文件:

Play支持生成两种类型的路由器,一种是依赖注入路由器,另一种是静态路由器.默认为静态路由器,但如果您使用Play种子激活器模板创建了新的Play应用程序,则您的项目将包含以下配置,build.sbt告诉它使用注入的路由器:

routesGenerator := InjectedRoutesGenerator
Run Code Online (Sandbox Code Playgroud)

Play文档中的代码示例假定您使用的是注入路由生成器.如果您不使用它,您可以通过为路由的控制器调用部分添加@符号前缀,或者将每个控制器声明为object 而不是a 来简单地调整静态路由生成器的代码示例class.

Java中的等价物是静态的和非静态的.

  • 否则DI对于2.4来说并不陌生,在2.3中它指的是通过Global.getControllerInstance获取实例的控制器,请参阅https://www.playframework.com/documentation/2.3.0/JavaInjection和https:// www .playframework.com /文档/ 2.3.0/ScalaDependencyInjection (3认同)