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-事件体系

Spring事件体系包括三个组件:事件,事件监听器,事件广播器。 事件:ApplicationEvent 事件监听器:ApplicationListener,对...
  • aBOUNTWINTER
  • aBOUNTWINTER
  • 2015年08月29日 10:44
  • 269

Spring-自定义事件发布

自定义事件发布           javaSE提供了实现自定义事件发布功能的基础类,即java.util.EventObject类和java.util.EventListener接口。所有的自定义...
  • wojiaohuangyu
  • wojiaohuangyu
  • 2016年07月02日 21:55
  • 3872

UIView 透明 , 事件向下传递

如图: 悬浮的三个按钮下方有一个可以点击的灰色区域,但是点击按钮之间的透明区域, 这三个按钮的contentView会响应这个点击事件,这时候需要让这个contentView不响应这个点击...
  • u014600626
  • u014600626
  • 2017年01月06日 17:24
  • 748

Android Touch事件传递机制全面解析(从WMS到View树)

转眼间近一年没更新博客了,工作一忙起来,很难有时间来写博客了,由于现在也在从事Android开发相关的工作,因此以后的博文也会更多地专注于这一块。 这篇文章准备从源码层面为大家带来Touch事件的传...
  • mmc_maodun
  • mmc_maodun
  • 2015年12月21日 07:43
  • 8210

ViewGroup和View的事件传递原理

View和ViewGroup的事件传递机制 view和viewgroup的事件传递机制。很早就想好好改清楚里面的关系。终于花了一个星期的时间,一直研究,基本上可以解决我们常遇到问题。本文以例子和源码...
  • zhi184816
  • zhi184816
  • 2015年11月08日 20:56
  • 1462

ios事件传递和响应

ios事件传递分为两个步骤,一、寻找触发视图  二、事件传递响应 一、寻找触发视图 第一响应者(First responder)指的是当前接受触摸的响应者对象(通常是一个UIView对象),即...
  • yongzhouyang000
  • yongzhouyang000
  • 2016年03月15日 16:29
  • 1277

Touch事件传递机制解析

dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent
  • cai_iac
  • cai_iac
  • 2017年03月01日 16:49
  • 396

C#不同类间通过事件传递参数

C#中不同类之间传递参数的方法有许多,这里介绍其中一种方法,通过事件传递参数:    定义两个类ClassA和ClassB,要通过事件将ClassA中成员class_A,传递到ClassB,同时Cla...
  • HolaMirai
  • HolaMirai
  • 2015年06月16日 22:13
  • 1180

vue子组件的使用和事件传递

vue子组件的使用和事件传递 在使用vue进行编程的时候我们经常会遇到在多个界面重用功能,比如联动的下拉框,重复的表单等等。如果在每个模块里面都重新写一遍,在发生变更的时候需要修改很多的界面,导致了...
  • wild46cat
  • wild46cat
  • 2017年12月01日 04:54
  • 154

oc-事件传递响应链

大概的逻辑如下- - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{ UIView *touchView = se...
  • li198847
  • li198847
  • 2016年05月17日 20:25
  • 1235
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring-事件传递
举报原因:
原因补充:

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