Hai*_*ito 10 dependency-injection scala playframework playframework-2.0
我想知道Play-Scala中的@Inject注释是如何工作的.它显然注入了依赖,但我很好奇它是如何工作的.当我在类扩展控制器上使用它并将路由生成器设置为injectroutesgenerator时,它似乎从这些类中自动创建对象,但是如何在其他上下文中使用它?
我试过了:
@Inject val mailer: MailerClient = null
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.@Inject的东西(mailerClient,WS ets.)是否有任何可能直接与值,而不是控制器类?
看起来很近.更改val到var,因为它不是最终的,需要在后期进行注射.
@Inject var mailer: MailerClient = null
Run Code Online (Sandbox Code Playgroud)
我还要检查MailerClient库是否被提及为项目配置中的依赖项.您可以尝试使用,WSClient因为它默认包含在模板中:
@Inject var ws: WSClient = null
Run Code Online (Sandbox Code Playgroud)
特别是我知道这个特别的作品.
在GitHub上创建了一个演示,该Play-Scala模板的index方法更改如下:
import play.api._
import play.api.libs.ws.WSClient
import play.api.mvc._
import play.api.libs.concurrent.Execution.Implicits.defaultContext
class Application extends Controller {
@Inject var ws: WSClient = null
def index = Action.async {
ws.url("http://google.com").get.map(r => Ok(r.body))
}
}
Run Code Online (Sandbox Code Playgroud)