Spring的消息和事件实例。

1、JavaBean:User.java

package cn.xy.hw;

/** *//**

* @author hanwei

*

*/

public class User …{

private String name;

private int age;

public int getAge() …{

return age;

}

public void setAge(int age) …{

this.age = age;

}

public String getName() …{

return name;

}

public void setName(String name) …{

this.name = name;

}

}

2、用于国际化的两个消息资源文件:xiyou_en_US.properties和xiyou_zh_CN.properties

userlogin user …{0} login at …{1} 和 userlogin 使用者 …{0} 于 …{1}登入

自定义下雨的事件:RainEvent.java

package cn.xy.hw;

import org.springframework.context.ApplicationEvent;

/** *//**

* @author hanwei

*

*/

public class RainEvent extends ApplicationEvent …{

public RainEvent(Object arg0) …{

super(arg0);

System.out.println("乌云密布、闪电、打雷,紧接着,下起了瓢泼大雨。");

}

}

下雨事件监听器:RainListener.java

package cn.xy.hw;

import org.springframework.context.ApplicationEvent;

import org.springframework.context.ApplicationListener;

/** *//**

* @author hanwei

*

*/

public class RainListener implements ApplicationListener …{

/**//* (non-Javadoc)

* @see org.springframework.context.ApplicationListener#onApplicationEvent(

org.springframework.context.ApplicationEvent)

*/

public void onApplicationEvent(ApplicationEvent arg0) …{

if(arg0 instanceof RainEvent)…{

System.out.println("唐僧大喊:"+arg0.getSource()+"赶快收衣服喽!");

}

}

}

配置文件:applicationContext.xml

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

<beans xmlns=" "

xmlns:xsi=" "

xsi:schemaLocation=" ">

<bean id="user" class="cn.xy.hw.User" abstract="false"

lazy-init="default" autowire="default" dependency-check="default">

<property name="name">

<value>hanweivalue>

property>

<property name="age">

<value>20value>

property>

bean>

<bean id="messageSource"

class="org.springframework.context.support.ResourceBundleMessageSource"

abstract="false" lazy-init="default" autowire="default"

dependency-check="default">

<property name="basename" value="xiyou">property>

bean>

<bean id="listener" class="cn.xy.hw.RainListener" abstract="false"

lazy-init="default" autowire="default" dependency-check="default">

bean>

beans>

测试类:MianTest.java

package cn.xy.hw;

import java.util.Calendar;

import java.util.Locale;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

/** *//**

* @author hanwei

*

*/

public class MianTest …{

public static void main(String[] args) …{

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

User user = (User)context.getBean("user");

Object[] obj=new Object[]…{user.getName(),Calendar.getInstance()。getTime()};

System.out.println(context.getMessage("userlogin",obj

,"找不到指定模块!",Locale.CHINA));

System.out.println(context.getMessage("userlogin",obj

,"找不到指定模块!",Locale.US));

context.publishEvent(new RainEvent("下雨了!"));

}

}

OK了,这是运行测试类的结果:

使用者 hanwei 于 07-8-26 下午6:14登入

user hanwei login at 8/26/07 6:14 PM

乌云密布、闪电、打雷,紧接着,下起了瓢泼大雨。

唐僧大喊:下雨了!赶快收衣服喽!

log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext)。

log4j:WARN Please initialize the log4j system properly.