为什么要在播放中控制控制器!框架是静态的



我正在使用游戏!框架1.2.5我的一个应用程序之一。最初,我通过创建类的新实例或使用工厂来解决依赖关系。但是我的应用程序正在增长,以这种方式管理依赖项变得越来越困难。我将与Google Guice

一起进行依赖注入

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

requestStaticInjection(MyController.class);

在控制器中注入服务

@Inject
static MyService mySerivce;

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

为什么播放控制器的方法是静态的?这是某种限制吗?还有其他好方法可以将课程注入游戏!控制器

旧问题,但是我遇到了同样的问题,我在这里找到了答案http://typesafe.com/blog/announcing-play-play-framework-framework-21-the-high-velocit,它不是与您使用的...

相同的播放版本

播放2.1现在支持一种新的路由语法,该语法启用了调用注入的控制器而不是静态方法。只需在路由文件中以"@"符号

将控制器方法前缀
GET     /                  @controllers.Application.index()

在您的conf/utaes

还有其他好方法可以将课程注入游戏!控制器

否。您不应在控制器中创建服务 - 使其成为不扩展控制器的常规类。然后从您的控制器致电服务类。将您的控制器代码保持在最低限度 - 那里有很多字节码魔术,因此请简单地保持控制器代码(查找对象,渲染结果,此类内容)

最新更新