读书人

spring器皿事件监听与观察者

发布时间: 2012-06-28 15:20:03 作者: rapoo

spring容器事件监听与观察者
1,观察者模式

被观察者
public interface watched{
void add(Watcher w);
void multicaster();//广播
}

观察者
public interface Watcher{
void watcher();
}

2, 事件监听

事件源:任何一个java类都可以做为事件源,但是必须维护一个监听器列表

public abstract class EventSource{
List listeners = new ArrayList();

public void addListener(EventListener listener){
listeners.add(listener);
}

}

事件对象
public abstract class EventObject{
EventSource s;
EventObject(EventSource s){
this.s = s;
}

Object getSource(){
return s;
}
}

事件监听器
public interface EventListener{
onEvent(EventObject eo);
}

3, spring 容器事件监听
事件源:
注意:ApplicationContext不算真正的事件源
真正的事件源应该是:ConfigurableApplicationContext
原因是ApplicationContext接口并没有给出维护观察者的列表函数。
事件:
容器启动事件 ContextStartedEvent
public void start() {
Map<String, Lifecycle> lifecycleBeans = getLifecycleBeans();
for (String beanName : new LinkedHashSet<String>(lifecycleBeans.keySet())) {
doStart(lifecycleBeans, beanName);
}
publishEvent(new ContextStartedEvent(this));//广播
}






读书人网 >软件架构设计

热点推荐