Модуль класса
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);
});
}
}
В My application.conf
я упомянул правильное имя пакета / пути для Module
класса, т.е.
play.modules.enabled += "configuration.MorphiaModule"
Я следовал официальному документу Play об Eager Binding: https://www.playframework.com/documentation/2.6.x/JavaDependencyInjection#Eager-bindings
Во время компиляции я получаю это:
CreationException: Невозможно создать инжектор, см. Следующие ошибки:
1) Не реализована реализация для play.inject.ApplicationLifecycle.
во время поиска play.inject.ApplicationLifecycle
для 1-го параметра конфигурации. PlayMorphia. ,
(PlayMorphia.java:28)
в конфигурации. MorphiaModule.configure (MorphiaModule.java:24) (через
modules: com.google.inject.util.Modules $ OverrideModule ->
configuration.MorphiaModule)
Что я здесь не так делаю? Любая помощь будет заметна.