什么是Play 2.4中Global.getControllerInstance的等价物?

时间:2015-07-17 16:14:58

标签: scala playframework dependency-injection playframework-2.4

我正在将(Scala)Play 2.3应用迁移到2.4。以前我有一个用于构建我的Controller对象的家庭旋转机制,并使用Global.getControllerInstance将它们提供给Play。这在2.4中已不再可用。有没有一种简单的方法来达到同样的效果?我宁愿不立即切换到使用Guice。

1 个答案:

答案 0 :(得分:1)

一种选择是使用Guice模块外观来包装自定义控制器生成器。您只需要编写一个Guice类,Play将使用它来注入您自定义生成的实例,而无需任何其他更改。

这是Java中的一个例子。 (对不起,我没有scala示例方便)。

package com.example;
class ControllerProviderModule extends AbstractModule {

    @Provides
    MyController1 providesMyController1() {
        // Create MyController1 and return it.
    }

    @Provides
    MyController2 providesMyController2() {
        // Create MyController2 and return it.
    }

    @Override
    protected void configure() {
        // Alternatively, use other approaches to bind controller classes to your custom generated instances 
    }
}

将模块添加到Play。

play.modules.enabled += "com.example.ControllerProviderModule"