BeanCreationNotAllowedException
これは、簡単にブートで再現できる 2.0.4
か 1.5.14
(つまり、春の雲 Edgware.SR4
や Finchley.SR1
)
(1) public synchronized void shutdown() {
(2) if (isShutdown.compareAndSet(false, true)) {
(3) logger.info("Shutting down DiscoveryClient ...");
(4)
(5) if (statusChangeListener != null && applicationInfoManager != null) {
(6) applicationInfoManager.unregisterStatusChangeListener(statusChangeListener.getId());
(7) }
理由:
レッツ・要約:
- DiscoveryClient.shutdown()は、アプリケーション・コンテキストのシャットダウン/クローズ処理中に呼び出され
- DiscoveryClientはApplicationInfoManagerから登録解除する必要があります
- applicationInfoManagerがリフレッシュスコープで、その目標は、すべてのメソッド呼び出しのために解決しなければなりません
- たBeanFactoryが閉状態にあるため、解像度がBeanCreationNotAllowedExceptionで失敗します。
要約:applicationInfoManagerがrefreshscoped Beanで、Beanがシャットダウン豆中にサービスを再構築し、すべてのリロードを呼び出して、その後の版で復元し、例外が発生します。
修理は提出: https://github.com/spring-cloud/spring-cloud-netflix/commit/0c3fbc34f6b906bbe5ffc0a6ac5900357b67c72a