我通过Play框架使用Java来实现API。我试图在应用程序启动时实例化一些变量,这些变量应在应用程序的整个生命周期中持续存在,并将在HomeController中使用。
这些变量是可用于从特定类调用函数的对象。
我已经读到,实现在应用程序开始时执行的代码的最佳方法是使用Dependency Injection,但我不知道该怎么做。
您能说明一下如何完成吗?
谢谢。
最佳答案
您可以在Play中找到here和here更多的依赖项注入示例。
有了想法之后,应该很容易实现。
要定义一个对象,该对象应在应用程序的整个生命周期中持续存在:
用@Singleton注释定义(此类对象的)类:
@Singleton
public class MyClass4AppLifecycle {
public MyClass4AppLifecycle() {
...
}
....
}
将带有@Inject批注的数据成员添加到控制器:
public class MyController extends Controller {
@Inject
private MyClass4AppLifecycle myGlobalObject;
...
注意:由于您提到了几个对象,因此,成员注入注解似乎比构造函数注解更合适。
在默认模块中注册您的类以进行依赖项注入(这是最简单的方法):
public class Module extends AbstractModule {
@Override
protected void configure() {
bind(MyClass4AppLifecycle.class).asEagerSingleton();
}
}
对您需要全局拥有的每种类型重复以上三个