龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

Spring总结实例之消息与事件

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
前几天看到网友总结的自学经验,觉得说得很好,引文:光看别人骑自行车很轻易, 那么是不是看了几百遍别人怎么骑自行车你也就马上能骑着走了呢? 不摔跤是不可能学会的。 还有就

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

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


  
精彩图集

赞助商链接