• Spring总结实例之消息与事件
    时间:2008-11-02   作者:佚名   出处:互联网

      前几天看到网友总结的自学经验,觉得说得很好,引文:光看别人骑自行车很容易, 那么是不是看了几百遍别人怎么骑自行车你也就马上能骑着走了呢? 不摔跤是不可能学会的。

    还有就是要经常总结:刚才说到会摔跤, 那么这时候就要总结遇到的问题, 这样下次再遇到就不会再去回忆了. 好记性不如烂笔头. 注释, 如果今天不写, 那么以后只会越来越忙, 以后再也没时间写注释了. 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.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="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.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.

    网友留言/评论

    我要留言/评论