快速入門
在spring中只要實(shí)現(xiàn) ApplicationListener 接口 實(shí)現(xiàn) onApplicationEvent 方法脸秽。即可完成監(jiān)聽事件记劈, 在event方法中 因?yàn)槭潜O(jiān)聽所有方法 ,在ioc容器中默認(rèn)會(huì)初始化監(jiān)聽器 外加5個(gè)本省具有的方法:下面代碼演示 幾個(gè)常用的系統(tǒng)默認(rèn)的方法胖替,如果要實(shí)現(xiàn)自定義事件類監(jiān)聽,那么 instanof 判定即可 后面的動(dòng)物類演示一個(gè)自定義的事件
總結(jié)步驟:
- 實(shí)現(xiàn)ApplicationListener<ApplicationEvent> 并且對(duì)需要事件監(jiān)聽
- 實(shí)現(xiàn)ApplicationContextAware 并發(fā)布 事件
3.構(gòu)建事件類
4.配置xml
同理要使用刀诬,還要配置 bean
<!-- 監(jiān)聽器 -->
<bean id="mylistener" class="listener.myListener"></bean>
package 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;
public class myListener implements ApplicationListener<ApplicationEvent>{
@Override
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof ContextStartedEvent) {
System.out.println("開始執(zhí)行");
} else if (event instanceof ContextClosedEvent) {
System.out.println("結(jié)束執(zhí)行");
}else if (event instanceof ContextRefreshedEvent) {
System.out.println("刷新事件");
}
}
}
斋竞、章姓。- 動(dòng)物類
package entiy;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class Animal implements ApplicationContextAware{
private ApplicationContext ac;
public void speak(){
//必須通過ApplicationContext發(fā)布事件
ac.publishEvent(new AnimalSpeakEvent(ac));
}
@Override
public void setApplicationContext(ApplicationContext arg0)
throws BeansException {
this.ac = arg0;
}
}
package entiy;
import org.springframework.context.ApplicationEvent;
public class AnimalSpeakEvent extends ApplicationEvent {
public String getAnimalEvent(){
return "動(dòng)物事情";
}
public AnimalSpeakEvent(Object source) {
super(source);
}
/**
*
*/
private static final long serialVersionUID = 1L;
}
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.xsd">
<!-- 監(jiān)聽器 -->
<bean id="mylistener" class="listener.myListener"></bean>
<bean id="Animal" class="entiy.Animal"></bean>
<bean id="jdk" class="services.servicesimpl" autowire="byName"> <property name="idao" ref="IDaoImpl"></property></bean>
<bean id="IDaoImpl" class="basedao.impl.IDaoImpl"></bean>
</beans>
只要在容器中 調(diào)用了這個(gè)方法,就會(huì)觸發(fā)監(jiān)聽器
Animal animal = (Animal) context.getBean("Animal");
animal.speak();