前几天看到网友总结的自学经验,觉得说得很好,引文:光看别人骑自行车很容易, 那么是不是看了几百遍别人怎么骑自行车你也就马上能骑着走了呢? 不摔跤是不可能学会的。
还有就是要经常总结:刚才说到会摔跤, 那么这时候就要总结遇到的问题, 这样下次再遇到就不会再去回忆了. 好记性不如烂笔头. 注释, 如果今天不写, 那么以后只会越来越忙, 以后再也没时间写注释了. If you doesn't have time to do it today, then when do you have time to do it tomorrow?
所以今天就写个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.hwimport 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.hwimport org.springframework.context.ApplicationEventimport 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="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="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.hwimport java.util.Calendarimport java.util.Localeimport org.springframework.context.ApplicationContextimport 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.
还有就是要经常总结:刚才说到会摔跤, 那么这时候就要总结遇到的问题, 这样下次再遇到就不会再去回忆了. 好记性不如烂笔头. 注释, 如果今天不写, 那么以后只会越来越忙, 以后再也没时间写注释了. If you doesn't have time to do it today, then when do you have time to do it tomorrow?
所以今天就写个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.hwimport 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.hwimport org.springframework.context.ApplicationEventimport 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="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="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.hwimport java.util.Calendarimport java.util.Localeimport org.springframework.context.ApplicationContextimport 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.