私はTomcat上でSpringアプリケーションを実行しています。初期化のデプロイメント中に、何らかのエラーが発生することがあります(つまり、JDNIの値が見つからない、またはサービスが一部のサービスに接続できないなど)。ですから、これが起こると例外がスローされ、@Configurationファイルにキャッチされます。キャッチブロックでは、System.exit(-1)でアプリケーションを閉じようとします。しかし、それを行う正しい方法ではないようです。原因Intellijは能力がない、またはサーバーをオフにしています。サーバーがオフになるまでリソースが解放されないこともあります。初期化時にスプリングを閉じる
私も試みた:
@Autowired
public ApplicationContext application context
@Bean
public IServerDataCache serverDataCache() {
try {
return new ServerDataCache(args);
} catch(InitializationError initializationError) {
log.error("Unable to load configuration for Server Data Cache. Closing application.");
System.exit(1); OR SpringApplication.exit(applicationContext)
}
return null;
}
両方はSystem.exit(1)。またはSpringApplication.exit(applicationContext)にも同じ効果があるようです。アプリケーションファイナライズを強化するためのより良い方法のアイデア。
ところで春の起動アプリケーションです。
だけ明確にする、提案はこのようなものです: @Bean 公共IServerDataCache serverDataCache()InitializationErrorは{新しいServerDataCache(引数)を返し 投げます。 } – kewne
わかりました –