[关闭]
@zhuanxu 2017-11-27T09:46:56.000000Z 字数 1041 阅读 539

spring boot 扩展分析

spring-boot


spring-boot具有高度扩展性,给开发者提供了大量的扩展点,帮助开发者对运行流程进行控制。

ApplicationContextInitializer

使用 ApplicationContextInitializer 的方法

注册的方法有:

  1. ApplicationContext.addInitializers 方法
  2. META-INF/spring.factories 文件中 context.initializer.classes
  3. META-INF/spring.factories 文件中 org.springframework.context.ApplicationContextInitializer

来看第二个方法是怎么实现的,看类DelegatingApplicationContextInitializer,这个类在spring-boot包中的META-INF/spring.factories文件中定义:

  1. org.springframework.context.ApplicationContextInitializer=\
  2. org.springframework.boot.context.ConfigurationWarningsApplicationContextInitializer,\
  3. org.springframework.boot.context.ContextIdApplicationContextInitializer,\
  4. org.springframework.boot.context.config.DelegatingApplicationContextInitializer,\
  5. org.springframework.boot.context.embedded.ServerPortInfoApplicationContextInitializer

DelegatingApplicationContextInitializer类实现了ApplicationContextInitializer接口,并且在其中加载context.initializer.classes中的类

CommandLineRunner,ApplicationRunner

这两个接口是在spring容器启动后最后的一个回调,多个类可以通过注解@Order来指定顺序

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注