1.概要
1.1は、春のイベントは、 豆と豆の間のメッセージングをサポートしています。
ビーンは、仕事を終えて、別のビーンを知りたいが、適切な治療をすることができたとき、我々はする必要が 別のBeanの作成 モニター ビーンが送信され、現在のイベントを。
1.2は、春のイベントには、次の手順に従ってくださいする必要があります。
、カスタムイベント、継承ApplicationEvent
B、イベントリスナーを定義 ApplicationListenerを実現するために
コンテナのリリースイベントを使用して、C、
1.3、例えば:
パッケージcom.an.config。 輸入org.springframework.context.annotation.ComponentScan; 輸入org.springframework.context.annotation.Configuration。 / ** * @description:事件配置类 * @author:anpeiyong * @date:2019年11月19日夜04時41分に作成された * @since: * / @Configuration @ComponentScan(値= "com.an") publicクラスEventConfig { }
パッケージcom.an.event。 輸入org.springframework.context.ApplicationEvent; / ** * @description:自定义事件 * @author:anpeiyong * @date:2019年11月19日夜04時32分に作成された * @since: * / publicクラスのMyEventがApplicationEvent {拡張 プライベート文字列MSGを; 公共MyEvent(オブジェクトソース、文字列MSG){ スーパー(ソース)。 this.msg = MSG; } パブリック文字列GETMSG(){ 戻りMSG。 } 公共ボイドsetMsg(文字列MSG){ this.msg = MSG。 } }
com.an.eventパッケージ; インポートorg.springframework.context.ApplicationListener; インポートorg.springframework.stereotype.Component; / ** * @description:カスタムイベントリスナ * ApplicationListenerがインタフェースを実装し、ApplicationListenerリスナーイベントの種類を指定します< MyEvent> *メッセージ受信処理のonApplicationEvent()メソッドを使用して * @author:anpeiyong * @date:作成に2019年11月19日16:34 * @since: * / @Component パブリッククラスMyListener実装ApplicationListener <MyEvent> { @オーバーライド 公共ボイドonApplicationEvent(MyEventイベント){ 文字列event.getMsg MSG =(); のSystem.out.printlnを( "私はメッセージ受信:" + MSGを); } }
パッケージcom.an.event。 輸入org.springframework.beans.factory.annotation.Autowired; 輸入org.springframework.context.ApplicationContext; 輸入org.springframework.stereotype.Component; / ** * @description: * @author:anpeiyong * @date:2019年11月19日午後四時38分に作成された * @since: * / @Component パブリッククラスMYPUBLISHER { //注入のApplicationContext、用来发布事件 @Autowired のApplicationContext ApplicationContextの; 公共の無効(文字列のMSG){公開 //使用ApplicationContext.publishEvent()发布 applicationContext.publishEvent(新しいMyEvent(これ、MSGを)); } }
パッケージcom.an.main。 輸入com.an.config.EventConfig; 輸入com.an.event.MyPublisher; 輸入org.springframework.context.annotation.AnnotationConfigApplicationContext; / ** * @description: * @author:anpeiyong * @date:2019年11月19日夜04時41で作成された :* @since * / publicクラスEventMainTest { パブリック静的無効メイン(文字列[] args){ AnnotationConfigApplicationContext annotationConfigApplicationContext =新しいAnnotationConfigApplicationContext(EventConfig.class)。 MYPUBLISHER MYPUBLISHER = annotationConfigApplicationContext.getBean(MyPublisher.class)。 myPublisher.publish( "こんにちは"); annotationConfigApplicationContext.close(); } }
結果:
私は、メッセージを受け取った:こんにちは