【发布时间】:2017-09-15 15:49:04
【问题描述】:
我有一个控制器:
class HomeController @Inject() (cc: ControllerComponents) extends AbstractController(cc)with Logging
{
this: SecuredActionByToken =>
def index = CheckedToken{ ...
SecuredActionByToken trait 使用类名CheckTokenService 来验证用户是否可以运行“索引”(我们正在尝试从一种蛋糕模式转移到 Guice)。 p>
是否可以将CheckTokenService 注入SecuredActionByToken?当然,我可以将它注入HomeController 本身并以某种方式使用它,但我真的不想在控制器不直接使用它们时将它们推送到它们。
【问题讨论】:
-
您可以在使用 Guice 时混合使用构造函数注入和方法注入,尽管如果您正在创建模拟或手动创建控制器实例,这会使编写测试变得更加困难。所以你的
SecuredActionByToken需要有一个@Inject def setCheckTokenService(cts: CheckTokenService),它将在实例化控制器后被调用。查看示例here。
标签: scala playframework guice self-type