次のような状況があります。私のマイクロサービスでは、[MA]私は、アプリケーションの起動後、または何らかのイベントに基づいていくつかのBeanを初期化/破棄したいと思います。想像力のために、ContentStoresについての情報を保持する別のマイクロサービス[MB]があります。 MAの起動後、contentstoreエントリのためにMBと頼みたいと思っています。それに基づいて、必要に応じて多くの豆を作りたいと思います。 storeCreated/storeDeletedをトリガーするイベントがある可能性があります。この場合、Beanを破棄する必要があります。アプリケーション起動後/アプリケーションイベント後のBeanの初期化[spring]
私は現在どのインタフェースを実装する必要があるのかわからないので、いくつかの提案をしてください。
だから、ApplicationListenerとイベントApplicationReadyEventから始めましょう。この2つでは、MAが初期化されており、おそらくストアのリストについてMBと聞くことができます。
ここではイベントのapplicationContextを利用してBeanを作成できます(各BeanにはIDなどの独自の修飾子があります)。必要に応じて依存関係を自動生成します。
しかし、ここからは、作成したBeanをApplicationContextに追加する方法がわかりません。
アプリケーションイベントに対しても同じメカニズムが存在しますが、その場合は、最初にBeanが作成されているかどうかを確認し、そうであれば返すことができます。
注:私はスプリングブート1.4を使用しています。
おかげ
あなたは子アプリケーションコンテを使用して検討していますxt?その後、それをリフレッシュして豆を作り、それを閉じてそれらを破壊することができます。 Beanを作成する方法は、要件に応じて決まります。あなたが作成する必要がある豆を記述できますか?固定された既知の数の豆があり、あなたの他のサービスからの構成が必要なだけですか、または豆の数は変わりますか? –
こんにちはAndy、豆の数は変化し、2番目のサービスに依存します。基本的には1-nのコンテンツストアがあり、アプリケーションの起動時またはリモートサービスで新しいcontentStoreエントリが作成されたときにインスタンス化する必要があります。その時点で、contentStoreが削除されている状況が起こる可能性があるので、アプリケーションからそのBeanを削除する必要があります。 – bilak
@AndyWilkinson [this](https://github.com/bilak/spring-bean-initializer-test)をご覧ください。 – bilak