我试图了解如何玩Play 2.1框架。我有一个服务,我需要在服务包之外访问。我已将下面的内容放在全局文件
中 protected Injector configure() {
injector = Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
bind(MyService.class).to(MyServiceImpl.class).in(Singleton.class);
}
});
return injector;
}
@Override
public <A> A getControllerInstance(Class<A> clazz) throws Exception {
return injector.getInstance(clazz);
}
在控制器类中,我可以通过以下方式访问我的对象,一切似乎都很好
@Inject
MyService serviceObj
但是在控制器外的其他地方,同一个对象似乎是空的。例如,我有一个核心模块,负责与服务交谈。控制器类将作业分发给核心模块。我需要能够在核心模块类中掌握这个MyService obj。
我在这里想念的是什么?
由于 KARTHIK
答案 0 :(得分:1)
我已经找到了解决这个问题的方法。
在我的配置方法中,我必须使用此
protected Injector configure() {
injector = Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
requestStaticInjection(TheClassThatNeedsMyService.class);
}
});
return injector;
}
在我不得不做的TheClassThatNeedsMyService中
@Inject MyService serviceObj;
仅供参考,这就是我的Service类的样子
@ImplementedBy(MyServiceImpl.class)
public interface MyService{
...
}
@Singleton
public class MyServiceImpl implements MyService{
...
}
现在我可以在我的应用程序中随时访问我的服务对象。希望它可以帮助某人
由于 KARTHIK
答案 1 :(得分:0)
作为静态注入的替代方法,请参阅此处的play-guice示例:
http://typesafe.com/activator/template/play-guice
Guice可以以Play的常规方式使用。