Spring小白到菜鸟之Spring事件入门

来源:互联网 发布:微信拼图游戏源码 编辑:程序博客网 时间:2024/05/29 11:50

下面使用一个模拟发送邮件的程序学习Spring事件

定义Spring事件类需要实现AppicationEnvent的子类。

package four;import org.springframework.context.ApplicationEvent;/** *   Spring的事件类 */public class EventMail extends ApplicationEvent {    private String text;    private String address;    public EventMail(Object source) {        super(source);    }    public EventMail(Object object, String text, String address) {        super(object);        this.text = text;        this.address = address;    }    public void setAddress(String address) {        this.address = address;    }    public String getAddress() {        return address;    }    public void setText(String text) {        this.text = text;    }    public String getText() {        return text;    }}

实现一个Spring事件的监听类。需要实现ApplicationListener接口。

package four;import org.springframework.context.ApplicationEvent;import org.springframework.context.ApplicationListener;/** *    Spring事件监听类 */public class EmailNotifer implements ApplicationListener<ApplicationEvent> {    @Override    public void onApplicationEvent(ApplicationEvent event) {        if (event instanceof EventMail) {            EventMail eventMail = (EventMail) event;            System.out.println("需要发送邮件的地址 " + eventMail.getAddress());            System.out.println("需要发送邮件的正文 " + eventMail.getText());        } else {            System.out.println("其它事件" + event);        }    }}

在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-3.0.xsd">    <!-- 配置监听器 -->    <bean class="four.EmailNotifer" /></beans>
package four;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestDemo {    public static void main(String[] args) {        ApplicationContext ctx = new ClassPathXmlApplicationContext("four.xml");        EventMail mail=new EventMail("post mail", "Jerry", "NewYork");       // 发布容器事件        ctx.publishEvent(mail);    }}
0 0
原创粉丝点击