Spring-事件传递

原创 2012年03月21日 09:31:08


ApplicationEvent类和ApplicationListener接口来提供,通过ApplicationContext的publishEvent()方法来通知ApplicationListener


LogEvent


package com.gc.action;

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



public class LogEvent extends ApplicationEvent{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	public LogEvent(Object msg) {
		super(msg);
		// TODO Auto-generated constructor stub
	}
	
	

	

}




LogListener

package com.gc.action;

import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class LogListener implements ApplicationListener{

	@Override
	public void onApplicationEvent(ApplicationEvent event) {
		// TODO Auto-generated method stub
		if(event instanceof LogEvent) {
			//设定时间
			SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			format.setLenient(false);
			String currentDate=format.format(new Date());
			System.out.println("输出时间:"+currentDate+"输出内容:"+event.toString());
		}
	}
	
	

}



LOG

package com.gc.action;

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

public class Log implements ApplicationContextAware{

	//设定变量applicationContext
	private ApplicationContext applicationContext;
	
	//变量applicationContext的set方法
	@Override
	public void setApplicationContext(ApplicationContext applicationContext)
			throws BeansException {
		// TODO Auto-generated method stub
		this.applicationContext=applicationContext;
	}
	
	//通过publishEvent发布时间
	public int log(String log) {
		LogEvent event=new LogEvent(log);;
		this.applicationContext.publishEvent(event);
		return 0;
	}

}

配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <!--定义一个Bean-->
 
    
    <bean id="HelloWorld" class="com.gc.action.HelloWorld">
    
    </bean>
    

    <bean id="date" class="java.util.Date"/>
    
    <bean id="log" class="com.gc.action.Log"/>
    
    <bean id="listener" class="com.gc.action.LogListener"/>


</beans>



测试程序:

package com.gc.test;

import java.util.Date;

import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;

import com.gc.action.HelloWorld;
import com.gc.action.Log;


public class TestHelloWorld {
    public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException
    {
    	ApplicationContext actx=new FileSystemXmlApplicationContext("config.xml");
    	Log log=(Log)actx.getBean("log");
    	log.log("gf");
    	//拿出Bean在配置文档中设定的内容
    	//System.out.println(helloWorld.getDate()+" "+helloWorld.getMsg()+"------");
    }
}



输出:


输出时间:2012-03-20 20:38:05输出内容:com.gc.action.LogEvent[source=gf]





相关文章推荐

Spring中ApplicationContext对事件传递

  • 2017年05月16日 11:57
  • 20KB
  • 下载

spring的ApplicationContext,事件监听器与国际化消息

Spring的ApplicationContext,事件监听,与国际化

spring事件管理

  • 2013年09月17日 09:38
  • 1.94MB
  • 下载

Spring的配置以及事件注入

  • 2010年11月29日 01:05
  • 1.24MB
  • 下载

spring中自定义Event事件的使用和浅析

在我目前接触的项目中,用到了许多spring相关的技术,框架层面的spring、spring mvc就不说了,细节上的功能也用了不少,如schedule定时任务、Filter过滤器、 intercep...

spring事件传播

  • 2017年09月11日 14:54
  • 6.56MB
  • 下载

spring 第1天 IOC,DI,国际化,容器事件

1.构造注入(就是使用 构造方法) 2,设值注入(就是使用setXX()方法) package cn.sh.springmvc.service.user; import cn.sh.spri...

spring 事件处理

  • 2013年04月18日 11:06
  • 1.17MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring-事件传递
举报原因:
原因补充:

(最多只允许输入30个字)