springboot扩展点

关键接口(扩展点)

1、SpringApplicationRunListener(springboot应用启动监听接口)

解释:

  1. 刚执行run方法时
  2. 环境建立好时
  3. 上下文建立好时
  4. 上下文载入配置时
  5. 上下文刷新完成后,running方法执行前
  6. 上面几步全部完成后
  7. 启动失败后

springboot在spring.factories文件中使用的实现类时EventPublishingRunListener

在此实现类中,实现上面的接口后用于发布各种事件,如:

  1. ApplicationStartingEvent
  2. ApplicationEnvironmentPreparedEvent
  3. ApplicationContextInitializedEvent
  4. ApplicationPreparedEvent
  5. ApplicationStartedEvent
  6. ApplicationReadyEvent
  7. ApplicationFailedEvent

2、ApplicationListener

和上面类似。但是这个接口是spring框架的东西,用于ConfigurableApplicationContext上下文事件的处理。

https://blog.csdn.net/sumengnan/article/details/113634063

借助SpringFactoriesLoader机制,在SpringBoot的项目自定义的META-INF/spring.factories文件中配置如下:

3、ApplicationContextInitializer(应用上下文初始化器)

这个接口也是spring框架的东西。

在ConfigurableApplicationContext类型(或子类型)的ApplicationContext的refresh之前,对ConfiurableApplicationContext的实例(AnnotationConfigServletWebServerApplicationContext)做进一步的设置和处理。

源码如下:

spring.factories文件中配置的其他的应用上下文初始化器如下:

4、CommandLineRunner或ApplicationRunner

在springboot启动完成后调用。我们可以执行一些内容,例如:读取配置文件、数据库连接等

源码如下:

可以实现Ordered接口调整执行的顺序。

说明:CommandLineRunner或ApplicationRunner接口唯一不同的是,参数的类型不同

CommandLineRunner是ApplicationArguments类型的参数。ApplicationRunner是String数组。

5、ServletContextInitialzer(servlet上下文初始化器)

用于初始化ServletContext。跟我们servlet有关系的,例如过滤器、servlet、session、Listen等都可以操作

实现类如下:

当你是servlet(web环境)时,tomcat启动时这些实现类的onStartup方法

会被ServletWebServerApplicationContext调用

应用:

著名的DispatchServlet类就是通过此接口注入到Servlet中去的

猜你喜欢

转载自blog.csdn.net/sumengnan/article/details/113729252