我注意到您正在使用 Java。这是我如何让它工作以注入控制器。
首先,我创建了以下 4 个类:
我的控制器:
package controllers;
import play.mvc.*;
import javax.inject.Inject;
public class MyController extends Controller {
@Inject
private MyInterface myInterface;
public Result someActionMethodThatUsesMyInterface(){
return ok(myInterface.foo());
}
}
我的界面:
package models;
public interface MyInterface {
String foo();
}
MyImplementation2Inject:
package models;
public class MyImplementation2Inject implements MyInterface {
public String foo() {
return "Hi mom!";
}
}
我的组件模块:
package modules;
import com.google.inject.AbstractModule;
import models.MyInterface;
import models.MyImplementation2Inject;
public class ComponentModule extends AbstractModule {
@Override
protected void configure() {
bind(MyInterface.class).
to(MyImplementation2Inject.class);
}
}
现在,我花了很长时间才弄清楚的最后一部分是注册模块。您可以通过将以下行添加到application.conf
位于conf
目录中的文件末尾来执行此操作:
play.modules.enabled += "modules.MyComponentModule"
我希望这对你有帮助。:)