Spring学习笔记(4)

 

ApplicationContext的事件处理

晓峰来到Spring世界已经很多年了。自从他掌握了现在Spring政府两位当权者的全部家庭资料以后(BeanFactory和ApplicationContext)。活的那叫一个滋润。

晓峰心里那个美就别提了,想干什么没有干不成的,绝对有和绅第二的觉悟。但是晓峰也是深得中华五千年的文化熏陶。万事自己少出头,出头也要找个枪先扔出去试试在说。现在他已经是Spring上上下下的不可或缺的万金油了。人缘特棒

晓峰对ApplicationContext进行了多年的跟踪了解,发现Spring国度看似管理的很松散其实是很严格,只要你一犯错立刻把你从Spring国清除出去。

ApplicationContext手下有两大特务机构。第一个是 ApplicationEvent 类、第二个是 ApplicationListener接口 。有着两个特务机关一起合作来帮助ApplicationContext管理这个国家。

晓峰通过多年的打探得到了他们的详细职能

ApplicationEvent :Spring政府事件,必须由ApplicationContext发布

ApplicationListener : 可由Spring政府中的任何监听器Bean担任。

ApplicationEvent的详细信息

package org.springframework.context;

import java.util.EventObject;

public abstract class ApplicationEvent extends  EventObject  {

 

  private static final long serialVersionUID = 7099057708183571937L;

 

  private final long timestamp;

 

  public ApplicationEvent(Object source) {//构造器

    super(source);

    this.timestamp = System.currentTimeMillis();

  }

  public final long getTimestamp() {//得到时间毫秒数

    return this.timestamp;

  }

}

ApplicationListeren 的详细信息

package org.springframework.context;

import java.util.EventListener;

public interface ApplicationListener extends EventListener {

 

  void onApplicationEvent(ApplicationEvent event);

}

ApplicationListeren、ApplictionEven和ApplicationContext构成了一个观察者模式

通俗的说就是:ApplicationListeren一直监视着你。只要你一做事情ApplictionEven就会根据你做的事情作出其相应的反应

下面我们拿求婚这件浪漫的事说话他们是怎么工作的吧

ApplicationEvent 派遣了一个事件响应人员 SayLove

SayLove的详细内容

package  Event;

import  org.springframework.context.ApplicationEvent;

public   class   SayLove   extends  ApplicationEvent{

  public  String  count ;

  public  SayLove(Object source) {

    super (source);

  }

 

  private   static   final   long   serialVersionUID  = 1L;

 

  public  SayLove(Object source,String count){

    super (source);

    this . count  = count ;

  }

  public  String getCount() {

    return   count ;

  }

  public   void  setCount(String count) {

    this . count  = count;

  }

}

事件必须是任职于ApplicationEvent的Bean(一定要继承ApplicationEvent)

ApplicationListeren派遣的监视人员是 SayLoveListeren

SayLoveListeren 的详细信息如下:

package  Event;

import  org.springframework.context.ApplicationEvent;

import  org.springframework.context.ApplicationListener;

public   class   SayLoveListeren   implements  ApplicationListener{

  public   void  onApplicationEvent(ApplicationEvent arg0) {

    if (arg0  instanceof  SayLove){

      SayLove sl =(SayLove)arg0;

      System. out .println( "Spring政府机关秘密记录了" );

      System. out .println(sl.getCount()+ "开始求婚宣言了!!" );

    } else {

      System. out .println( "Spring政府事件" );

    }

   

  }

}

派遣的监视人员必须是供职于ApplicationListeren的职员。这些职员必须掌握的技能是 public   void  onApplicationEvent(ApplicationEvent arg0) { }

事件和监听的文件是:

<? xml  version = "1.0"  encoding = "UTF-8" ?>

< beans

  xmlns = "http://www.springframework.org/schema/beans"

  xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" >

    <!-- 设置监听器 -->

  < bean  id  "sayLoveListeren"  class  "Event.SayLoveListeren" />

</ beans >

测试平台

package  Event;

import  org.springframework.context.ApplicationContext;

import  org.springframework.context.support.ClassPathXmlApplicationContext;

public   class  Text {

  public   static   void  main(String[] args){

    ApplicationContext ctx =  new  ClassPathXmlApplicationContext( "applicationContext.xml" );

    SayLove sl =  new  SayLove( "shuo" "孩子他妈,孩子都2岁了,嫁给我吧!!" );

    ctx.publishEvent(sl);

  }

}

结果是:

Spring政府事件

Spring政府机关秘密记录了

孩子他妈,孩子都2岁了,嫁给我吧!!开始求婚宣言了!!

Spring政府还有几个事件处理部门

1. ContextRefreshedEven   ApplicationContext容器初试化或刷新时,触发该事件

2. ContextClostEvent    ApplicationContext容器关闭时,触发该时间

3. RequestHandledEvent    web相关的时间,只能应用于使用DispatcherServlet的web应用

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值