spring IoC学习 ------IoC容器:ApplicationContext容器内部事件发布

    javaSE的自定事件发布:说有的自定义事件类型可以通过拓展EventObject来实现,而事件的监听器则拓展自EventListener。

    eg:自定义事件类继承EventObject的MethodExecutionEvent

  MethodExecutionEvent 
        serialVersionUID = 1L
.methodName = .methodName =

定义事件监听接口MethodExecutionEventListener继承自EventListener

  MethodExecutionEventListener 
    
    

MethodExecutionEventListener的实现类:

  SimpleMethodExecutionEventListener  
        String methodName ="start to ececute the method[" + methodName + "]." 
        String methodName ="finished to execute the method [" ++ "]."

事件发布MethodExecutionEventPublisher:

  List<MethodExecutionEventListener> listeners =  ArrayList<MethodExecutionEventListener> =  MethodExecutionEvent("methodToMonitor"0"this is what i want to do "1  publishEvent(<MethodExecutionEventListener> copyListeners =  ArrayList<MethodExecutionEventListener> (status == 0   (   = 

    上面是javaSE原生的事件监听类。spring的容器内事件发布类允许以context.applicationEvent的形式的事件。容器内注册的context.applicationListener类型的bean定义会被ApplicationContext容器自动识别它们负责监听容器内发布的说有ApplicationEvent事件。

    ApplicationEvent:它是一个抽象类,根据不同的情况提供不同的实现。

        1.ContextClosedEvent:在ApplicationContext容器咋即将关闭的时候发布的事件类型。

        2.ContextRefreshedEvent:在ApplicationContext容器在初始化或者刷新的时候发布的事件类型。

        3.RequestHandledEvent:Web请求处理后发布的事件,有一子类ServletRequestHandledEvent提供特定于JavaEE的servlet事件

        4.ContextStoppedEvent。

    ApplicationListener:使用的自定义事件监听器接口定义,当容器启动时,会自动是被和加载EventListener类型bean定义,一旦容器有事件发布,将通知这些注册到容器的EventListener。

    ApplicationContext容器的具体实现类在实现事件发布和事件监听器的注册方面,交给一个称作ApplicationEventMulticaster的接口,这个接口有一个抽象实现类,context.event.AbstractApplcationMulticaster.事件发布功能交给其子类SimpleApplicationEventMulticaster。

....................................................................

      1.ApplicationEventPublisherAware接口。

      2.ApplicationContextAware接口。

 

 

下面是对上面原生的自定义事件处理进行的改造:

事件类:ApplicationContextMethodExecutionEvent

  ApplicationContextMethodExecutionEvent  
        serialVersionUID = 1L
 ApplicationContextMethodExecutionEvent(Object source ,String methodName,.methodName =.status = .methodName =   setStatus(.status =

监听器类:ApplicationContextMethodExecutionEventListener

  ApplicationContextMethodExecutionEventListener  (evt "applicationEvent log : want to do something"

发布器类:ApplicationContextMethodExecutionEventPublisher

  ApplicationContextMethodExecutionEventPublisher  = ,"methodToMoniter",0"this is what i want to do"= ,"methodToMoniter",1 
        .eventPublisher =

通过xml为其注入容器

 

主程序:

  =  ClassPathXmlApplicationContext("classpath:config-example8.xml"=

 

        

来源:http://www.verydemo.com/demo_c143_i9108.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值