2

我正在使用播放!我的一个应用程序的框架 1.2.5。最初,我通过创建类的新实例或使用工厂来解决依赖关系。但是我的应用程序在增长,并且以这种方式管理依赖项变得更加困难。我将转向使用 Google Guice 进行依赖注入

看起来,对于每个控制器,我必须写

requestStaticInjection(MyController.class);

在控制器中注入服务

@Inject
static MyService mySerivce;

这令人沮丧,我不喜欢控制器具有静态方法并且只能访问静态变量。我想将依赖项传递给控制器​​的构造函数,我不想声明静态字段。

为什么播放控制器的方法是静态的?这是某种限制吗?还有其他将类注入 Play 的好方法!控制器

4

2 回答 2

1

老问题,但我遇到了同样的问题,我在这里找到了答案http://typesafe.com/blog/announcing-play-framework-21-the-high-velocit虽然,它与你的 Play 版本不同使用...

Play 2.1 现在支持一种新的路由语法,可以调用注入的控制器而不是静态方法。只需在路由文件中为控制器方法添加前缀“@”符号

GET     /                  @controllers.Application.index()

在你的 conf/routes

于 2013-09-15T04:42:25.887 回答
0

还有其他将类注入 Play 的好方法!控制器

不,您不应该在控制器中创建服务 - 使其成为不扩展控制器的常规类。然后从您的控制器调用服务类。保持你的控制器代码最少——那里有很多字节码魔法,所以保持控制器代码简单(查找对象、渲染结果等)

于 2013-01-24T21:50:37.037 回答