我通过Play框架使用Java来实现API。我试图在应用程序启动时实例化一些变量,这些变量应在应用程序的整个生命周期中持续存在,并将在HomeController中使用。
这些变量是可用于从特定类调用函数的对象。

我已经读到,实现在应用程序开始时执行的代码的最佳方法是使用Dependency Injection,但我不知道该怎么做。

您能说明一下如何完成吗?

谢谢。

最佳答案

您可以在Play中找到herehere更多的依赖项注入示例。

有了想法之后,应该很容易实现。
要定义一个对象,该对象应在应用程序的整个生命周期中持续存在:


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

对您需要全局拥有的每种类型重复以上三个

10-08 07:05