百度站长怎么验证网站,知乎的网站建设和网站运营,ccd深圳设计公司,中国做网站最好的企业监听器模式介绍 监听器模式的要素
事件监听器广播器触发机制
SpringBoot监听器实现
系统事件 事件发送顺序 监听器注册
监听器注册和初始化器注册流程类似 监听器触发机制 获取监听器列表核心流程: 通用触发条件: 自定义监听器实现
实现方式1
实现监听器接口:
Order(1)
…监听器模式介绍 监听器模式的要素
事件监听器广播器触发机制
SpringBoot监听器实现
系统事件 事件发送顺序 监听器注册
监听器注册和初始化器注册流程类似 监听器触发机制 获取监听器列表核心流程: 通用触发条件: 自定义监听器实现
实现方式1
实现监听器接口:
Order(1)
public class FirstListener implements ApplicationListenerApplicationStartedEvent {Overridepublic void onApplicationEvent(ApplicationStartedEvent event) {System.out.println(hello first);}
}
配置resources/META-INF/spring.factories:
org.springframework.context.ApplicationListenercom.mooc.sb2.listener.FirstListener
实现方式2
启动类中进行添加
Order(2)
public class SecondListener implements ApplicationListenerApplicationStartedEvent {Overridepublic void onApplicationEvent(ApplicationStartedEvent event) {System.out.println(hello second);}
}
SpringBootApplication
MapperScan(com.mooc.sb2.mapper)
public class Sb2Application {public static void main(String[] args) {
// SpringApplication.run(Sb2Application.class, args);SpringApplication springApplication new SpringApplication(Sb2Application.class);
// springApplication.addInitializers(new SecondInitializer());springApplication.addListeners(new SecondListener());springApplication.run(args);}}
实现方式3
properties文件中进行配置
同初始化器一样,同样需要注意,这种方式的Order会失效,跟前面两种方式相比始终都是最先加载
Order(3)
public class ThirdListener implements ApplicationListenerApplicationStartedEvent {Overridepublic void onApplicationEvent(ApplicationStartedEvent event) {System.out.println(hello third);}}
key值context.listener.classes
value值: listener类的全类名
context.listener.classescom.mooc.sb2.listener.ThirdListener
实现方式4
自定义制定监听器对哪一类事件感兴趣
Order(4)
public class FourthListener implements SmartApplicationListener {Overridepublic boolean supportsEventType(Class? extends ApplicationEvent eventType) {return ApplicationStartedEvent.class.isAssignableFrom(eventType) || ApplicationPreparedEvent.class.isAssignableFrom(eventType);}Overridepublic void onApplicationEvent(ApplicationEvent event) {System.out.println(hello fourth);}
}
配置resources/META-INF/spring.factories:
org.springframework.context.ApplicationListenercom.mooc.sb2.listener.FourthListener
启动后会发现hello fourth会被打印两次,因为两个事件都触发了,所以打印了两遍
面试题
介绍一下监听器模式? 结合源码图和四要素进行回答
SpringBoot关于监听器相关的实现类有哪些? 可以通过spring.factories文件去看具体的实现类有哪些
SpringBoot框架有哪些框架事件以及它们的发送顺序? 参考上面事件发送顺序流程图
介绍一下监听事件的触发机制? 围绕着监听器的加载注册,以及如何判断出监听器对某一个事件感兴趣进行作答
如何自定义实现系统监听器及注意事项?实现ApplicationListener接口与SmartApplicantionListener接口的区别? ApplicationListener只能指定对某一类事件的监听,而SmartApplicantionListener可以实现指定对多类事件的监听