Spring起動後、特定の注釈を持つBeanのインスタンスコードをすべて取得します。


本論文で研究したのは主にSpring起動後に特定の注釈を持つ全てのBeanを取得することであり、具体的には以下の通りである。
最近のプロジェクトの中で一つのビジネスシーンに遭遇したのは、Spring容器の起動後にすべてのBeanを獲得し、特定のインターフェースの対象を実現しました。最初に思い付いたのはApplication Contawareです。setAppliation Controtextでctxを通じてすべてのbeanを取得しました。論理が間違っているようです。この方法は全てのbean初期化が完了した後に実現されたのではないです。その後試してみましたが、何かListenerがありますか?良いものを見つけました。その後、Appliation Listenerの使い方を教えてください。たくさんの例があります。私も私の例を記録してみます。
簡単です。ApplicationListener<ContextRefreshedEvent>インターフェースを実現して、実現クラスを@Componentすればいいです。コードは以下の通りです。

@Component 
public class ContextRefreshedListener implements ApplicationListener<ContextRefreshedEvent> {
	@Override 
	  public void onApplicationEvent(ContextRefreshedEvent event) {
		//     Spring   
		if(event.getApplicationContext().getParent()==null){
			Map<String,Object> beans = event.getApplicationContext().getBeansWithAnnotation(IMobile.class);
			for (Object bean:beans.values()){
				System.err.println(bean==null?"null":bean.getClass().getName());
			}
			System.err.println("=====ContextRefreshedEvent====="+event.getSource().getClass().getName());
		}
	}
}
ここでは、event.getApplicationContext().getBeansWithAnnotationを介して、特定の注釈を持つ全てのビーンズのセットを取得し、次いで、全てのビーンを巡回してトラフィックシーンを実現する。
要約思考:このような機能はシステムパラメータの初期化を実現し、システム中のすべてのインターフェースサービスリストを取得するなど、Spring起動後に初期化する必要がある機能です。
延生してください。以上の起動後の事件以外に、他の三つの事件があります。

Cloosedは容器を閉じる時に呼び出します。Startdは理論的に容器を起動する時に呼び出します。Stopedは理論的に容器を閉じる時に呼び出します。
私はTomcat Serverを通じて起動停止しました。RefreshedとCloseedだけ見ました。なぜか分かりません。暇があったらまた研究を続けます。
締め括りをつける
以上、本文ではSpring起動後に特定の注釈を持つBeaビンのインスタンスコードのすべての内容を取得します。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。