Spring学习之事件传播

ApplicationContext 提供了对bean事件传播的功能,通过publishEvent()方法可以通知系统内所有ApplicationListener。

 

//LoginAction.java----------ApplicationContextAware

package test3;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class LoginAction implements ApplicationContextAware{
 
 private ApplicationContext applicationContext;

 public void setApplicationContext(ApplicationContext applicationContext)throws BeansException {
  this.applicationContext = applicationContext;
 }
 
 public int login(String username,String password) {
  ActionEven actionEven = new ActionEven(username);
  applicationContext.publishEvent(actionEven);
  return 0;
 }

}

 

//ActionEvent.java------------ApplicationEvent

package test3;

import org.springframework.context.ApplicationEvent;

public class ActionEven extends ApplicationEvent {

 /**
  *
  */
 private static final long serialVersionUID = 1L;

 public ActionEven(Object source) {
  super(source);
  // TODO Auto-generated constructor stub
 }

}

 

//ActionListener.java-------------ApplicationListener

package test3;

import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;

public class ActionListener implements ApplicationListener{

 @Override
 public void onApplicationEvent(ApplicationEvent arg0) {
  // TODO Auto-generated method stub
  if (arg0 instanceof ActionEven) {
   System.out.println(arg0.toString());
  }
 }

}

 

//测试类

package test3;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class EventTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml");
  LoginAction ae = (LoginAction)ctx.getBean("loginAction");
  ae.login("jenny", "4542525");

 }

}

 

LoginAction的login方法激发ActionEvent事件,

由ApplicationContext的publishEvent事件传播,

ApplicationListener监听,然后判断是否是要处理的事件。

你可能感兴趣的:(学习笔记)