我对依赖注入问题感到困惑。我想要实现的是替换GlobalSettings.onStart()
调用,我在2.3中初始化了一些静态单例对象,并对这些对象进行了适当的依赖注入。
我想做的是:
控制器 - >模型(将对象注入此模型)
到目前为止我所做的是一个中途措施;在控制器中:
private static SomeObject myStaticSingletonObject = new SomeObject();
public Promise<Result> getSomeData() {
return handleRequest(() -> new SomeDataAjaxRequest(myStaticSingletonObject));
}
public Promise<Result> handleRequest(Function0<AbstractAjaxRequest<?>> supplier) {
Promise<AbstractAjaxRequest<?>> promise = Promise.promise(supplier);
return promise.map(arg -> ok(arg.getResponse()));
}
handleRequest()是我使用的自定义方法,并没有真正相关,但我将其包含在内以保证完整性:
在模型中我只将SomeObject作为参数:
private final SomeObject someObject;
public SomeDataAjaxRequest(SomeObject someObject) {
super(null);
this.someObject = someObject;
}
在我的build.sbt中,我有:
routesGenerator := InjectedRoutesGenerator
所以基本上我的问题是我应该如何将SomeObject注入到模型中,以及我应该如何创建SomeObject对象,我认为我不应该使用new SomeObject()
。
理想情况下,我想对这些对象使用字段注入,因为我不想混淆可能实际上具有模型相关参数的构造函数,而不仅仅是包含事物定义的这些实用程序类(SomeObject基本上只是加载一些数据库中当前在应用程序生命周期内是静态的信息,但可能会发生变化。)
同样值得注意的是,我打算使用Guice来管理DI。
我知道我应该创建一个Guice DI工厂并且已经看过这个文档,但我仍然不确定如何将它集成到我的播放应用程序中。