示例播放剪影模板中隐式环境值的定义(使用Guice)

时间:2014-10-07 01:14:22

标签: scala authentication guice playframework-2.3

在发现here的轮廓实现示例中,模板中的内容是/app/controllers/SignUpController.scala第28行中使用的隐式'env'值(类型为Environment [User,CachedCookieAuthenticator]),例如,使用Guice定义?

我想我不明白app / utils / di / SilhouetteModule.scala中的provideEnvironment如何用于通过app / Global第24行创建的“注入器”将Silhouette Enviroment“注入”SignUpController(例如)。斯卡拉。我没有看到在play-silhouette-slick-seed示例中的任何地方都使用了provideEnvironment,所以我似乎无法弄清楚它的参数给出了什么值(例如userService,authenticatorService等)。

1 个答案:

答案 0 :(得分:2)

此剪影模块示例使用Guice进行scala依赖注入框架。所有绑定都在util.di.SilhouetteModule.scala文件中配置。还有另一个例子,其中依赖注入被Cake模式替换。 look at this

[编辑]简而言之:

如果查看Global.scala文件,您将找到guice配置。 Guice被迫创建每个控制器。每个视图都依赖于控制器,也将由guice管理。

如上所述,SilhouetteModule.scala文件用于配置Silhouette模块。使用@Provides注释的方法很少。如果你看Guice documentation。每当需要类方法返回时,Guice就会调用这样的方法,例如:每次guice需要注入Environment[User, CachedCookieAuthenticator]它调用def provideEnvironment方法,因为这个方法返回这样的类型。