下面使用一个模拟发送邮件的程序学习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);
}
}