spring的事件机制主要成员有这两名大将 (1)ApplicationEvent:容器事件,由ApplicationContext发布 (2)ApplicationListener:监听器,可以由容器中的任何bean担任。
上代码!
事件类
package com.demo.impls; import org.springframework.context.ApplicationEvent; public class EmailEvent extends ApplicationEvent{ private String address; private String text; public EmailEvent(Object source) { super(source); } public EmailEvent(Object source , String address , String text){ super(source); this.address = address; this.text = text; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getText() { return text; } public void setText(String text) { this.text = text; } }监听类
package com.demo.impls; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; public class EmailNotifier implements ApplicationListener{ @Override public void onApplicationEvent(ApplicationEvent evt) { if(evt instanceof EmailEvent){ EmailEvent emailEvent = (EmailEvent)evt; System.out.println("email address:" + emailEvent.getAddress()); System.out.println("email text:" + emailEvent.getText()); }else{ System.out.println("else event:" + evt); } } }beans.xml
<bean class="com.demo.impls.EmailNotifier"></bean>Test测试
package com.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.demo.impls.EmailEvent; public class Test03 { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); EmailEvent evt = new EmailEvent("wu","wangjie@163.com","hello what"); ctx.publishEvent(evt); } }最终结果 email address:wangjie@163.com email text:hello what else event:com.demo.impls.EmailEvent[source=wu]