spring 监听器:
监听容器事件:
package com.sharp.mvc.listener; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextClosedEvent; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.ContextStartedEvent; import org.springframework.context.event.ContextStoppedEvent; public class ContextStartListener implements ApplicationListener<ApplicationEvent> { @Override public void onApplicationEvent(ApplicationEvent arg0) { if(arg0 instanceof ContextStartedEvent) { System.out.println("容器开始"); }else if(arg0 instanceof ContextRefreshedEvent) { System.out.println("容器刷新"); }else if(arg0 instanceof ContextStoppedEvent) { System.out.println("容器暂停"); }else if(arg0 instanceof ContextClosedEvent) { System.out.println("容器关闭"); } } }
监听自定义事件:
事件:
package com.sharp.cxf.listener; import org.springframework.context.ApplicationContext; import org.springframework.context.event.ApplicationContextEvent; public class EmailEvent extends ApplicationContextEvent { private String to; public EmailEvent(ApplicationContext source, String to) { super(source); this.to = to; } public String getTo(){ return this.to; } }
事件监听器:
package com.sharp.cxf.listener; import org.springframework.context.ApplicationListener; public class EmailListener implements ApplicationListener<EmailEvent> { @Override public void onApplicationEvent(EmailEvent event) { System.out.println("已成功发送一封邮件"+ event.getTo()); } }
事件源:
package com.sharp.cxf.listener; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; public class EventSource implements ApplicationContextAware { private ApplicationContext context; @Override public void setApplicationContext(ApplicationContext context) throws BeansException { System.out.println("设值中……"); this.context = context; System.out.println(context); } public void sendMail(){ System.out.println("正在发送邮件"); System.out.println(context); EmailEvent event = new EmailEvent(context, "发送给xiao peng"); context.publishEvent(event); } }