Ⅰ. SpringApplication
1. Startup Failure 启动失败
注入FailureAnalyzers 获得一个机会去提供一个详细的错误信息
SpringBoot提供了很多FailureAnalyzer 的实现类,也可以添加自定义的
如果没有failure analyzers 可以开启debug模式 java -jar xxx.jar --debug
FailureAnalyzer实现必须在META-INF/spring.factories中注册,如:
org.springframework.boot.diagnostics.FailureAnalyzer=\
com.example.ProjectConstraintViolationFailureAnalyzer
2. Customizing the Banner 自定义横幅
https://blog.csdn.net/u011447164/article/details/86009262
3. Customizing SpringApplication
@SpringBootApplication
public class SpringBootJarApplication {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(SpringBootJarApplication.class);
app.setBanner((e, c, o) -> o.println("BINGJJFLY") );
app.run(args);
}
}
4. Fluent Builder API 流畅的Builder API
@SpringBootApplication
public class SpringBootJarApplication {
public static void main(String[] args) {
new SpringApplicationBuilder()
.sources(SpringBootJarApplication.class)
.bannerMode(Banner.Mode.CONSOLE)
.banner((e, c, o) -> o.println("BINGJJFLY"))
.run(args);
}
}
5. Application Events and Listeners 应用事件和监听器
除了常见的spring框架事件(如ContextRefreshedEvent)之外,SpringApplication还发送一些额外的应用程序事件
添加监听器方式:
(1)SpringApplication.addListeners(…)
(2)SpringApplicationBuilder.listeners(…)
(3)META-INF/spring.factories 文件中添加:
org.springframework.context.ApplicationListener=com.example.project.MyListener
事件发送顺序:
(1)ApplicationStartingEvent:在运行开始时但在任何处理之前发送,除非用于注册侦听器和初始化器
(2)ApplicationEnvironmentPreparedEvent:在已知上下文中要使用的Environment,但在创建上下文之前发送
(3)ApplicationPreparedEvent:在刷新开始之前但在加载bean定义之后发送
(4)ApplicationStartedEvent:在刷新上下文之后,但在调用任何应用程序和命令行运行程序之前发送
(5)ApplicationReadyEvent:在调用任何应用程序和命令行运行程序后发送。它表示应用程序已准备好为请求提供服务
(6)ApplicationFailedEvent:启动出现异常时发送