我一直在 Google 上寻找一些关于如何在 Play Framework 2.1 中使用 Guice/Spring DI 的有用信息
我想要做的是在一些 DAO 中注入多个服务,反之亦然。
只需要对此进行一些澄清 - 在 play 2.1 中,是否必须在 DI 的路由文件中使用 @ 注释?
我在这里看过这个指南 -https://github.com/playframework/Play20/blob/master/documentation/manual/javaGuide/main/inject/JavaInjection.md https://github.com/playframework/Play20/blob/master/documentation/manual/javaGuide/main/inject/JavaInjection.md
并应用以下步骤在应用程序中创建一个全局类并在 Build.scala 中添加 GUICE 依赖项,但在调用注入的对象时继续收到空指针异常。
有人能够使用 Guice 让 DI 在 Play 2.1 中工作吗?我在互联网上看到过一些例子,但它们似乎都在控制器中使用 DI。
我注意到你正在使用 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();
}
我的实现2注入:
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"
我希望这对您有帮助。 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)