• 【串线篇】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));
    }
    
    }
  • 相关阅读:
    iOS开发之结合asp.net webservice实现文件上传下载
    iOS开发之结合asp.net webservice实现文件上传下载
    底部粘连(stiky footer)布局
    底部粘连(stiky footer)布局
    我在项目中运用 IOC(依赖注入)--实战篇
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    Facebook Libra 白皮书全文:采用拜占庭共识,可扩展至数十亿客户
    DBA遇到问题时的30 个反应,你是哪一种?
  • 原文地址:https://www.cnblogs.com/yanl55555/p/12092460.html
Copyright © 2020-2023  润新知