如何在播放框架全局设置中调用 onStart 方法?

How to call onStart method in play framework Global setting?

我正在使用以下代码:

package common;

import com.mongodb.MongoClient;
import com.mongodb.ServerAddress;
import org.mongodb.morphia.Datastore;
import org.mongodb.morphia.Morphia;
import play.GlobalSettings;
import java.util.Arrays;


public class Global extends GlobalSettings {

private static Datastore datastore;


public static Datastore getDatastore() {
    return datastore;
}

@Override
public void onStart(play.Application config) {
    super.beforeStart(config);

    int mongoPort = config.configuration().getInt("mongo.port");
    MongoClient mongoClient = new MongoClient(Arrays.asList(
            new ServerAddress(config.configuration().getString("mongo.server1"), mongoPort)));

    Morphia morphia = new Morphia();
    datastore = morphia.createDatastore(mongoClient, config.configuration().getString("mongo.db"));
    datastore.ensureIndexes();
}
}

我通过以下方式调用 getDatastore() 方法:

public void save() {
    Global.getDatastore().save(this);
}

但它在 return datastore 行抛出空指针异常。当我将调试点放在 onStart 方法上时,它甚至没有被调用。

我这里做错了什么?

你必须设置

application.global=common.Global

在你的application.conf