依赖注入不适用于游戏框架

时间:2018-06-28 03:06:10

标签: java dependency-injection playframework guice morphia

模块类

public class MorphiaModule extends AbstractModule {

@Override
protected void configure() {
   bind(PlayMorphia.class).asEagerSingleton();
 }
}

PlayMorphia

@Singleton
public class PlayMorphia {

MongoClient mongo = null;
Datastore datastore = null;
Morphia morphia = null;

@Inject
public PlayMorphia(ApplicationLifecycle lifecycle, Environment env, Configuration config) {
    try {
        configure(config, env.classLoader(), env.isTest());  // Method calling to get the config
    } catch (Exception e) {
        e.printStackTrace();
    }
    lifecycle.addStopHook(()->{
        if (env.isTest()) {
            mongo().close();
        }
        return CompletableFuture.completedFuture(null);
    });
 }
}

在我的application.conf中,我提到了Module类的正确包/路径名,即

play.modules.enabled  += "configuration.MorphiaModule"

我遵循了 Play框架关于Eager绑定的官方文档:https://www.playframework.com/documentation/2.6.x/JavaDependencyInjection#Eager-bindings

在编译时,我得到了:

  

CreationException:无法创建注射器,请参见以下错误:

     

1)没有绑定play.inject.ApplicationLifecycle的实现。       在定位play.inject.ApplicationLifecycle时       用于configuration.PlayMorphia的第一个参数。 。       (PlayMorphia.java:28)       在配置时.MorphiaModule.configure(MorphiaModule.java:24)(通过       模组:com.google.inject.util.Modules $ OverrideModule->
      configuration.MorphiaModule)

我在这里做错了什么?任何帮助将是可观的。

0 个答案:

没有答案