Spring总结实例之消息 事件

本文通过实战演示了Spring框架中消息和事件的功能。利用国际化消息文件实现不同语言的提示信息,并自定义了一个下雨事件,展示了如何发布事件及监听处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    今天看了美河夜色狼族的一集Spring视频,是关于Bean的高级部分:消息和事件。以前看书或看视频,只是看了却没有动手编代码,看后就忘了。

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

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

<?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>hanwei</value>
        
</property>
        
<property name="age">
            
<value>20</value>
        
</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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值