public class MorphiaModule extends AbstractModule {
@Override
protected void configure() {
bind(PlayMorphia.class).asEagerSingleton();
}
}
@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)
我在这里做错了什么?任何帮助将是可观的。