我想知道,如果有可能,而不必由路由通过注入使用吉斯依赖。 如果是我怎么能叫我的class Test @Inject()...
我的应用程序中?
Answer 1:
我认为有在游戏框架使用吉斯两种方式:
1)直接实例基于所述绑定的对象:
吉斯添加到您的Build.scala应用的依赖
val appDependencies = Seq(
"com.google.inject" % "guice" % "3.0"
)
创建全局类,它扩展GlobalSettings,并在配置绑定接口实现():
public class Global extends GlobalSettings {
private Injector injector = Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
bind(TestInferface.class).to(TestImpl.class);
}
});
}
在您的控制器或其他任何类,使用@Inject注解来获取接口的实例:
@Inject
private Test test;
2)依赖注入播放控制器
覆盖GlobalSettings.getControllerInstance管理控制器类实例化或者通过吉斯:
@Override
public <A> A getControllerInstance(Class<A> controllerClass) throws Exception {
return injector.getInstance(controllerClass);
}
如何使用吉斯注入?
GET /test1 @controllers.ApplicationTest1.index()
GET /test2 @controllers.ApplicationTest2.index()
开始@路由定义将play.GlobalSettings#getControllerInstance方法进行管理。
文章来源: Playframework & Guice without routing