gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:08:30 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com