试图了解如何使用内置的DI框架Guice在Play Framework JAVA(2.4x版)中连接到MongoDB。

到目前为止,我正在使用Jongo(1.2版)。我创建了一个JongoProvider类,在其中初始化具有与MongoDB相关的IP地址的MongoDB实例。

我将其注入到如下所示的模型中...,但是似乎无法以静态方法访问注入的实例。是否有访问注入Mongo对象的正确方法?

class User {
    @Inject JongoProvider jongo;

    public static User getUsers() {
        // can't access static instance
        jongo.getcollection("users");
    }
}

// ===根据Mon Calamari的答案进行编辑
class User {

    public static JongoProvider jongo() {
        return Play.application().injector().instanceOf(JongoProvider.class);
    }

    public static User getUsers() {
        jongo().getcollection("users");
    }
}

最佳答案

User类不属于Guice依赖项注入框架,因此您不能将Guice依赖项注入到Guice一无所知的东西中。尝试对Play对象使用静态方法:

JongoProvider provicer = Play.application().injector().instanceOf(JongoProvider.class)

09-27 08:30