[String line articles] spring boot startup configuration principle

Several important events callback mechanism

Configuring in-INF META / spring.factories ApplicationContextInitializer

SpringApplicationRunListener

Ioc only two containers placed ApplicationRunner CommandLineRunner

Start the process:

First, create an object SpringApplication

 

Second, run run method

 

 

 

 

 

 

 

Third, the event listener mechanism

Configuring the 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));
}

}

Guess you like

Origin www.cnblogs.com/yanl55555/p/12092460.html