2

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

4

1 回答 1

1

一种选择是使用 Guice Module 外观来包装您的自定义控制器生成器。您只需要编写一个 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"
于 2015-07-20T19:22:21.917 回答