Spring Boot 特性(一)SpringApplication

概要:使用class SpringApplication 一键启动应用

public static void main(String[] args) {
    SpringApplication.run(MySpringConfiguration.class, args);
}

1.Startup Failure 启动失败

启动失败时会输出详尽的错误分析,例如:

***************************
APPLICATION FAILED TO START
***************************

Description:

Embedded servlet container failed to start. Port 8080 was already in use.

Action:

Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.

可以通过FailureAnalyzer接口定制化。封装autoconfig组件时,自定义的FailureAnalyzer可以帮助使用者更好的排查错误。

2. Lazy Initialization (全局)延迟加载

spring.main.lazy-initialization=true

优点:

  • 加快应用的启动速度(显而易见)

缺点:

  • 延迟问题的暴露(只有bean被需要时才会暴露问题)。
  • 导致OOM(这也属于被延迟暴露的问题吧)

3. Customizing the Banner 定制化Banner

略(需要了解请自行百度)

4.Customizing SpringApplication 定制化SpringApplication

大约就是下面这个意思,作用不大

public static void main(String[] args) {
    SpringApplication app = new SpringApplication(MySpringConfiguration.class);
    app.setBannerMode(Banner.Mode.OFF);
    app.run(args);
}

5. Fluent Builder API

builder的方式构造上下文。

new SpringApplicationBuilder()
        .sources(Parent.class)
        .child(Application.class)
        .bannerMode(Banner.Mode.OFF)
        .run(args);

6. Application Availability

似乎与 Kubernetes关系紧密,暂时略过。

7. Application Events and Listeners 应用事件与监听

可以监听spring application整个的启动过程。配置中心动态拉取配置就是通过这个方式实现的。实现ApplicationListener即可监听应用。
ps:由于事件可能发生在application context加载之前,最好通过SPI机制加载。

8. Web Enviment

自动感知web环境,创建对应的WebServerApplicationContext。

9. Accessing Application Arguments 访问应用参数

可以通过注入ApplicationArguments 访问命令行参数。

10. Using the ApplicationRunner or CommandLineRunner

应用程序启动后可以通过这个执行代码。看源码,时序在started和ready事件之间。
与listenner相比有两个特点:

  • 可以接受命令行参数
  • 保证同步
    ps:不明确有什么用,直接使用listenner+ApplicationArguments 就好了呗

11. Application Exit

貌似是控制程序退出时的退出码。
ps:停都停了,我要返回码干嘛?

12. Admin Features 管理特性

貌似是对jmx的支持。。。略过

你可能感兴趣的:(Spring Boot 特性(一)SpringApplication)