我们都知道,我们的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("人吃东西之前执行");
}
}
【java的监听器实现】测试方法 TestPersonListener
public class TestPersonListener{
public static void main(String[] args){
Person person=new Person();
person.registListener(new PersonListener());
person.eat();
}
}