我們都知道,我們的spring容器是通過classLoaderListener來建立的,而ClasssLoaderListener實作了ServletListener接口,這樣,在比如tomcat初始化servlet容器時,我們就可以建立出我們的spring容器了。
下面我就來講一下java中監聽器是怎麼樣實作的。先來講一下原理
java中的監聽器涉及到三個對象,事件源,事件對象,事件監聽器對象。首先是将事件監聽器對象注冊到事件源上,然後當事件源觸發事件時,通過回掉将事件對象傳給事件監聽器對象,然後事件監聽器對象來調用相關的監聽的方法。
事件對象,Person對象,eat方法
public class Person{
private PersonListener personListener;
public void registerListener(PersonListener personListener){
this.personListener=personListener;
}
public void eat(){
if(personListener!=null){
Event event=new Event(this);
this.personListener.doEat(event);
}
System.out.println("人吃飯");
}
}
事件對象 Event
public class Event{
private Person person;
public Event(Person person){
this.person=person;
}
public Perosn getPerson(){
return this.person;
}
public void setPerson(Person person){
this.person=person;
}
}
事件監聽對象 PersonListener
public interface PersonListener{
public void doEat(Event event);
}
事件監聽器的實作類 PersonListenerImpl
public class PersonListenerImpl implements PersonListener{
public void doEat(Event event){
System.out.println("人吃東西之前執行");
}
}
測試方法 TestPersonListener
public class TestPersonListener{
public static void main(String[] args){
Person person=new Person();
person.registListener(new PersonListener());
person.eat();
}
}