概要:使用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的支持。。。略过