zoukankan      html  css  js  c++  java
  • 【串线篇】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));
    }
    
    }
  • 相关阅读:
    Dan Gillmor总结微软付费平息纠纷历史
    从一份GIS试题谈GIS开发人员的技能和招聘
    转载:赵勖予,废旧电脑配件的新用法next
    百度败诉MP3搜索遭封杀
    给人也装一个中断系统
    ArcGIS Server 9.2的一些新特征
    基于MA和CA的交通空间决策模型
    Modeling Our World 读书笔记
    卸载了NewsGator,开始使用Gougou
    OpenOffice.org 2.0即将发布
  • 原文地址:https://www.cnblogs.com/yanl55555/p/12092460.html
Copyright © 2011-2022 走看看