【串线篇】spring boot启动配置原理

几个重要的事件回调机制

配置在META-INF/spring.factories ApplicationContextInitializer

SpringApplicationRunListener

只需要放在ioc容器中的两个ApplicationRunner CommandLineRunner

启动流程:

一、创SpringApplication对象

二、运行run方法

 

 

三、事件监听机制

配置在META-INF/spring.factories

ApplicationContextInitializer

public  class  HelloApplicationContextInitializer  implements ApplicationContextInitializer<ConfigurableApplicationContext>  {
    @Override
    public  void  initialize(ConfigurableApplicationContext  applicationContext)  { 
   System.out.println("ApplicationContextInitializer...initialize..."+applicationContext);     
} }

SpringApplicationRunListener

public  class  HelloSpringApplicationRunListener  implements  SpringApplicationRunListener  {

//必须有的构造器
public  HelloSpringApplicationRunListener(SpringApplication  application,  String[]  args){

}

@Override
public void starting() { 
System.out.println("SpringApplicationRunListener...starting..."); } @Override public void environmentPrepared(ConfigurableEnvironment environment) {
Object o = environment.getSystemProperties().get("os.name"); System.out.println("SpringApplicationRunListener...environmentPrepared.."+o); } @Override public void contextPrepared(ConfigurableApplicationContext context) {
System.out.println("SpringApplicationRunListener...contextPrepared..."); } @Override public void contextLoaded(ConfigurableApplicationContext context) {
System.out.println("SpringApplicationRunListener...contextLoaded..."); } @Override public void finished(ConfigurableApplicationContext context, Throwable exception)

配置(META-INF/spring.factories)

org.springframework.context.ApplicationContextInitializer=\
com.atguigu.springboot.listener.HelloApplicationContextInitializer

 org.springframework.boot.SpringApplicationRunListener=\

 com.atguigu.springboot.listener.HelloSpringApplicationRunListener

只需要放在ioc容器中

ApplicationRunner

@Component
public  class  HelloApplicationRunner  implements  ApplicationRunner{
@Override
public  void  run(ApplicationArguments  args)  throws  Exception  {
System.out.println("ApplicationRunner...run....");
}

}

CommandLineRunner

@Component
public  class  HelloCommandLineRunner  implements  CommandLineRunner  {
@Override
public void run(String... args) throws Exception {
System.out.println("CommandLineRunner...run..."+  Arrays.asList(args));
}

}

猜你喜欢

转载自www.cnblogs.com/yanl55555/p/12092460.html