如何在Play2应用程序出口上访问静态注入依赖项

时间:2012-11-28 01:31:28

标签: java playframework-2.0 guice

我有一个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 对象已经被这个阶段破坏了。

我也知道这种方法可能完全错误;)

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我假设您使用的是Typesafe plugin

AFAIK,不幸的是,there is no listener when the plugin已关闭,有一个onStart()方法,但没有onStop() method

因此,无论是分叉插件,还是将Guice自己集成到Global对象的onStart / onStop方法中。