spring 事件机制
在软件开发过程中,有时候我们会遇到需要把具体业务解耦出来,让各个模块只负责相应的处理逻辑.比如说,在我们的抽象业务逻辑中有一个负责开往目的地的司机driver,现在我们的业务系统中不仅要处理司机去往目的地的逻辑,也有其他业务模块需要关注司机具体的目的地是什么地方。然而司机只负责把乘客送到具体地方。不需要负责告诉业务他去哪里。这时候我们可以采用spring的事件机制,让业务解耦。 spring的事件机制包括: 事件源,对应具体的事件. 事件监听器,负责接收具体的事件源. 事件广播器, 负责发布事件源。 相应的处理逻辑为:事件监听器会注册具体的事件源,当事件广播器广播具体的事件源后,事件监听器能接到该事件的发布消息,然后处理相关事件。 事件源 定义事件源需要继承spring的ApplicationEvent类,该类有两子类ApplicationContextEvent,RequestHandledEvent. ApplicationContextEvent有4个子类,ContextStartedEvent,ContextRefreshedEvent,ContextClosedEvent,ContextStoppedEvent,分别表示容器启动,刷新,关闭,停止的事件。 RequestHandledEvent只有定义了DispatcherServlet时才会产生该事件