を働いていないフックを停止アプリ/フォルダにあります。プレイのJava 2.5 Guiceの積極的なロードとこのコード
public class GuiceConfiguration extends AbstractModule {
@Override
protected void configure() {
bind(KafkaConnection.class).asEagerSingleton();
}
}
@Singleton
public class KafkaConnection {
public KafkaConnection(){
try {
ServiceUtils.startKafka();
} catch (IOException e) {
PlayLoggerUtils.logError("[Global]", this.getClass(), e);
}
}
public KafkaConnection(ApplicationLifecycle lifecycle) {
lifecycle.addStopHook(() -> {
PlayLoggerUtils.logDebug("Kafka shutting down", this.getClass());
ServiceUtils.shutDownKafka();
return CompletableFuture.completedFuture(null);
});
}
}
アプリケーションのconfで
play.module.enabled += "GuiceConfiguration"
クラスIで注入を呼び出す場合にのみ初期化されていますコントローラ。アプリケーションの起動時にロードされていません。ストップフックも実行されていません(ctrl + dで試して、プロダクションモードでは強制終了しません)。
を:Guiceのコンストラクタに@Injectアノテーションを必要としないのですか? application.confとGuiceConfigurationは私のためによく見えます。 – Kris
コンストラクタに@Injectアノテーションが付いていない場合、guiceはパラメータなしのものを取るので、stopフックは登録されません。また、「コントローラを呼び出す」とはどういう意味ですか? – rethab