SpringでAplication Contectはイベントに対して伝達します.
13479 ワード
Apple Conteetにおけるイベント処理は、Appplication Event類とAppliation Listenerインターフェースを通じて提供され、Appplication ConteetのpublishEvent()方法によってApple Listenerに公開される.
ここには三つのキャラクターが含まれています.リリースされたイベント、イベントのモニターとイベントの発表者です.
事件の発表者は事件を発表する時、事件の傍受者に通知します.
この三つのキャラクターをめぐって分析します.
まずリリースされたイベントです.Springでは、このキャラクターはApple Eventクラスを引き継いでいます.
また傍受者を見て、傍受者はApple Listenerインターフェースを実現しました.
イベントの発表者はApplication ContactextAwareインターフェイスを実現し、publishEventメソッドを呼び出してイベントを発表します.ここでは,イベントはパラメータとしてこの方法に伝達される.
Apple Comptextはイベントをリリースする能力を持っています.このインターフェースはApplication Event Publisherインターフェースを継承しているからです.Springでは、イベントに関するインターフェースとクラスは、主にAppliation Event、Appliation Listenerを含む.
イベントのクラスを定義するには、Aplication EventまたはAppplication ContEventの抽象的なクラスを継承する必要があります.この抽象的なクラスには構成関数が一つしかありません.
また、Objectタイプのパラメータをイベントソースとして持ち、イベントソースはnullではないので、自分の構造関数でsuperを実行する必要があります.
(Object)
という場合は、そのアプローチを実行します.SprigIoCのイベントモデルは簡単で、粗粒度のモニターモデルです.
イベントが到着すると、すべてのモニターが受信され、応答が行われます.いくつかのタイプに対してのみ傍受を希望するなら、コードに必要です.
コントロールを行う
リリースイベントについては、Application ControtextAwareまたはApplication Event Publishereインターフェースを実現できます.
体の詳細.実際にはSpringでプロファイルを読み取り、反射を利用して、Appliation Listenerを実現するBeanをすべて探して、コンテナとして登録します.
のイベントモニターです.イベントを受信すると、Springはイベントモニターを1つずつ呼び出します.残りはプロファイルにモニターを配置することです.
Conttext StopedEvent.
ここには三つのキャラクターが含まれています.リリースされたイベント、イベントのモニターとイベントの発表者です.
事件の発表者は事件を発表する時、事件の傍受者に通知します.
この三つのキャラクターをめぐって分析します.
まずリリースされたイベントです.Springでは、このキャラクターはApple Eventクラスを引き継いでいます.
また傍受者を見て、傍受者はApple Listenerインターフェースを実現しました.
イベントの発表者はApplication ContactextAwareインターフェイスを実現し、publishEventメソッドを呼び出してイベントを発表します.ここでは,イベントはパラメータとしてこの方法に伝達される.
Apple Comptextはイベントをリリースする能力を持っています.このインターフェースはApplication Event Publisherインターフェースを継承しているからです.Springでは、イベントに関するインターフェースとクラスは、主にAppliation Event、Appliation Listenerを含む.
イベントのクラスを定義するには、Aplication EventまたはAppplication ContEventの抽象的なクラスを継承する必要があります.この抽象的なクラスには構成関数が一つしかありません.
また、Objectタイプのパラメータをイベントソースとして持ち、イベントソースはnullではないので、自分の構造関数でsuperを実行する必要があります.
(Object)
public class UserEvent extends ApplicationEvent
{
private String eventContent;
public String getEventContent(){
return eventContent;
}
public void setEventContent(String eventContent){
this.eventContent = eventContent;
}
public UserEvent(Object source,String eventContent){
super(source);
this.eventContent = eventContent;
}
}
一つのイベントに対しては、特定のモニターが必要かもしれないので、モニタは、Appliation Listenerインターフェースを実現する必要がある.モニターがイベントを受信するとという場合は、そのアプローチを実行します.SprigIoCのイベントモデルは簡単で、粗粒度のモニターモデルです.
イベントが到着すると、すべてのモニターが受信され、応答が行われます.いくつかのタイプに対してのみ傍受を希望するなら、コードに必要です.
コントロールを行う
public class UserListener implements ApplicationListener
{
public void onApplicationEvent(ApplicationEvent event){
if(event instanceof UserEvent){ // UserEvent
UserEvent ue = (UserEvent)event;
String result = ue.getEventContent();
System.out.println("Event Content:"+result);
}
}
}
リリースイベントについては、Application ControtextAwareまたはApplication Event Publishereインターフェースを実現できます.
public class UserBiz implements ApplicationContextAware
{
private ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
{
this.applicationContext = applicationContext;
}
public void service(String thing)
{
UserEvent event = new UserEvent(this,thing);
event.setEventContent("I shoud "+thing);
applicationContext.publishEvent(event);
}
}
または次のようにします
public class UserBiz2 implements ApplicationEventPublisherAware
{
private ApplicationEventPublisher applicationEventPublisher;
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)
{
this.applicationEventPublisher = applicationEventPublisher;
}
public void service(String thing)
{
UserEvent event = new UserEvent(this,thing);
event.setEventContent("I shoud "+thing);
applicationEventPublisher.publishEvent(event);
}
}
これで事件の発表が完了しました.Application Contectが事件を受信した後、イベントの放送はSpring内で行われました.体の詳細.実際にはSpringでプロファイルを読み取り、反射を利用して、Appliation Listenerを実現するBeanをすべて探して、コンテナとして登録します.
のイベントモニターです.イベントを受信すると、Springはイベントモニターを1つずつ呼び出します.残りはプロファイルにモニターを配置することです.
class="footprint.spring.ioc.event.UserListener"/>
Spring容器自体は、ContectClose Event、ContectRefreshedEvent、Contect StartEvent、Conttext StopedEvent.