私はguiceを使用して依存関係を挿入しています。私のIDEはIntelliJ 2017.2.5です。次のコードを実行すると、main
メソッドは実行を継続し、停止しません。 DIを削除すると、プロセスはProcess finished with exit code 0
で終了します。Guice Injectorはアプリケーションの実行を維持します
main
メソッドを持つクラス:
public class Test {
@Inject
Provider<EntityManager> em;
public void test() {
if(em.get().isOpen())
System.out.println("EM open");
}
public static void main(String args[]) {
final Injector injector = createInjector(new DatabaseModule());
Test app = injector.getInstance(Test.class);
app.test();
System.out.println("Done");
}
}
はDatabaseModule
:私はすべてがうまくいけTest.main
を実行した場合
public class DatabaseModule extends AbstractModule {
private static final String PU_NAME = "my_pu";
@Override
protected void configure() {
install(new JpaPersistModule(PU_NAME));
bind(JPAInitializer.class).asEagerSingleton();
}
@Singleton
private static class JPAInitializer {
@Inject
public JPAInitializer(final PersistService service) {
service.start();
}
}
}
、JPAが適切に初期化されると、私は以下を参照してください。出力:
EM open
Done
何らかの理由で、その後もアプリケーションが実行されています。アプリケーションを手動で終了する必要があります。
これを修正するにはどうすればよいですか?
解決済み!ありがとう! –