我有一个Play 2应用程序正在使用Guice将静态对象(实时传感器监视对象)注入到Application.java中:
controllers.Application:
public class Application extends Controller {
@Inject static MonitorService monitorService;
...
}
module.Dependencies:
public class Dependencies {
....
@Provides
@Singleton
public MonitorService getMonitorService(final MonitorFactory factory) {
return new MonitorService(factory){
@Override
public MonitorService(Factory factory){
return factory.getMonitor();
}
}
}
}
我的问题是,我想在播放应用程序退出时访问 factory 或 monitor 对象,以便正常关闭它。我已经看过挂钩 GlobalSettings.onStop ,但看不到从 Play.Application 对象中提取引用的方法。我尝试将 MonitorService 注入到Global类中,但它返回一个null对象,所以我假设 Dependencies 对象已经被这个阶段破坏了。
我也知道这种方法可能完全错误;)
非常感谢任何帮助。
答案 0 :(得分:0)
我假设您使用的是Typesafe plugin。
AFAIK,不幸的是,there is no listener when the plugin已关闭,有一个onStart()方法,但没有onStop() method
。
因此,无论是分叉插件,还是将Guice自己集成到Global对象的onStart / onStop方法中。