• 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"]  
          }  
        }  
    
  • 相关阅读:
    JSTL fn:split()函数
    JSTL判断list是否为空
    oracle 合并列的函数wm_concat
    Eclipse软件使用说明
    Caused by: org.hibernate.HibernateException: identifier of an instance of ... is alterde from
    SpringData JPA详解
    关于JPA方法名创建自动查询
    jquery移除、绑定、触发元素事件使用示例详解
    js String对象中常用方法小结(字符串操作)
    java中list的使用方法
  • 原文地址:https://www.cnblogs.com/MaxElephant/p/8108159.html
Copyright © 2020-2023  润新知