java - 如何在 Play2 应用程序退出时访问静态注入(inject)依赖项

标签 java playframework-2.0 guice

我有一个 Play 2 应用程序,它使用 Guice 将一个静态对象(一个实时传感器监控对象)注入(inject)到 Application.java 中:

Controller 。应用程序:

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();
              }
          }
   }
}

我的问题是,我想在 Play 应用程序退出时访问 factorymonitor 对象,以便正常关闭它。我查看了 Hook 到 GlobalSettings.onStop,但看不到从 Play.Application 对象中提取引用的方法。我已尝试将 MonitorService 注入(inject)到 Global 类中,但它返回一个空对象,因此我假设 Dependencies 对象已在此阶段被销毁。

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

非常感谢任何帮助。

最佳答案

我假设您使用的是 Typesafe plugin .

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

因此,要么你 fork 插件,要么你自己将 Guice 集成到 Global 对象的 onStart/onStop 方法中。

关于java - 如何在 Play2 应用程序退出时访问静态注入(inject)依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13596323/

相关文章:

java - HK2居民发电机: How to bind a factory to an annotated service?

java - 如何在 Play Framework 中上传文件?

java - Play Ebean 列表 null

java - 是否可以使用 Guice 注入(inject)请求注入(inject)的类?

java - 如何将 Jersey ExceptionMapper 与 Google Guice 一起使用?

java - 获取Java源文件的包

java - 如何判断输入的句子是积极的还是消极的?

java - Java 中的内存管理

java - PlayFramework 2.x Ebean 查询匹配集合中的 Manytomany 属性

java - 如何设置具有 JSF 2.2、JPA 2.0 和依赖注入(inject)功能的 Google AppEngine Web 应用程序?