zoukankan      html  css  js  c++  java
  • Spring Boot的SpringApplication类详解

    相信使用过Spring Boot的开发人员,都对Spring Boot的核心模块中提供的SpringApplication类不陌生。SpringApplication类的run()方法往往在Spring应用的入口类中被调用,以启动Spring应用。

    1.Spring应用的入口类与SpringApplication类
    1) Spring应用的入口类

    Spring应用的入口类是Spring应用的配置起点,是配置Spring上下文的起点,往往使用了@SpringBootApplication或@EnableAutoConfiguration等标注类。

    在Spring应用的入口类中往往只有一个main()方法,这虽然与标准的Java应用保持了一致,但在有些时候会让开发人员觉得困惑。

    在Spring应用的入口类中的main()方法中,往往只是简单地调用Spring Boot的SpringApplication类的run()方法,以启动该Spring应用。

    SpringApplication.run(MySpringConfigurationApp.class, args);  
    

    其中,第一个参数MySpringConfigurationApp.class就是Spring应用的入口类;第二个参数args是启动Spring应用的命令行参数,该参数可以在Spring应用中被访问(稍后详解)。

    2) Spring Boot的SpringApplication类

    Spring Boot的SpringApplication类,用以启动一个Spring应用,实质上是为Spring应用创建并初始化Spring上下文。

    SpringApplication类的run()方法默认返回一个ConfigurableApplicationContext对象。

    • 2.、SpringApplication类的其他配置
      • banner.txt以定制启动LOGO
      • 禁用LOGO

    SpringApplication app = new SpringApplication(MySpringConfigurationApp.class);
    app.setBannerMode(Banner.Mode.OFF);
    app.run(args);
    - 启动过程中的可监听事件
    ApplicationStartingEvent
    ApplicationEnvironmentPreparedEvent
    ApplicationPreparedEvent
    ApplicationReadyEvent或ApplicationFailedEvent

    3、 增强SpringApplication类的CommandLineRunner接口或ApplicationRunner接口
    启动Spring应用后,如果还想进一步执行其他代码,可以定义Spring bean类以实现CommandLineRunner接口或ApplicationRunner接口。

    CommandLineRunner接口或ApplicationRunner接口都只提供了唯一的run()方法,该方法将在SpringApplication.run()方法执行结束前被调用。

    1) CommandLineRunner接口能够以String数组的形式访问Spring应用的启动参数args

     @Component  
        public class MyBean implements CommandLineRunner {  
            public void run(String... args) {  
                // Do something...  
            }  
        }  
    

     2) ApplicationRunner接口能够以ApplicationArguments的形式访问应用的参数args

    @Component  
    public class MyBean implements ApplicationRunner{  
        public void run(ApplicationArguments args) {  
            // Do something...  
        }  
    } 
    

     4、 在Spring bean中,通过构造函数访问Spring应用的启动参数args

        @Component  
        public class MyBean {  
          @Autowired  
          public MyBean(ApplicationArguments args) {  
            boolean debug = args.containsOption("debug");//参数作为命令行中的一个option,如--debug  
            List<String> files = args.getNonOptionArgs();  
            // 如果启动参数"--debug logfile.txt",  
            // 则debug=true, files=["logfile.txt"]  
          }  
        }  
    
  • 相关阅读:
    jsp 特殊标签
    poj 1753 Flip Game 高斯消元 异或方程组 求最值
    zoj 3155 Street Lamp 高斯消元 异或方程组 求方案数
    poj1222 EXTENDED LIGHTS OUT 高斯消元解异或方程组 模板
    zoj 3930 Dice Notation 模拟
    zoj 3157 Weapon 线段树求逆序对数
    hdu 1242 Rescue BFS+优先队列
    hdu 3466 Proud Merchants 贪心+01背包
    zoj 3689 Digging 贪心+01背包
    hdu 2602 Bone Collector 01背包模板
  • 原文地址:https://www.cnblogs.com/MaxElephant/p/8108159.html
Copyright © 2011-2022 走看看