配置SpringApplication与事件监听器
★ 设置SpringApplication
【注意:】不能用SpringApplication的静态run()方法来运行Spring Boot应用。▲ 两种方式设置:- 通过SpringApplication对象的setter方法进行设置,然后调用run()实例方法启动Spring Boot应用。public static void main(String[] args)
{// 如果程序要对SpringApplication进行一些设置,那就应该先创建该对象的实例。var app = new SpringApplication(App.class);// 取消预初始化,启动延迟初始化app.setLazyInitialization(false);// 关闭Banner信息app.setBannerMode(Banner.Mode.OFF);app.run(args);
}- 通过SpringApplicationBuilder的流式API进行设置,最后调用run()实例方法启动Spring Boot应用。SpringApplicationBuilder提供了一个额外的好处,它可以设置Spring容器之间的父子关系。new SpringApplicationBuilder().sources(App.class).parent(Parent.class) // 此配置类创建Spring容器作为父容器.child(Child.class) // 此配置类创建Spring容器作为子容器.lazyInitialization(true).bannerMode(Banner.Mode.OFF).run(); // 启动Spring Boot应用让Spring容器有父子层次关系有一个好处:父容器不能访问子容器中的Bean,但子容器可以访问父容器中所有Bean。
★ 事件监听器:
▲ Spring容器本身就支持事件监听器,对于传统Spring框架,只要将一个监听器Bean配置在容器中,Spring就会自动将它注册成监听器。▲ 传统方式注册的事件监听器监听不到SpringApplication的事件。▲ 如果要监听SpringApplication触发的事件有两种方式:- 调用SpringApplication的addListeners()或SpringApplicationBuilder的listeners()方法添加事件监听器- 用META-INF/spring.factories文件来配置事件监听器。在该文件中添加如下代码即可注册事件监听器。- (跟自定义失败分析器的道理一样,自己写一个MyListener的类,然后再META-INF/spring.factories配置)org.springframework.context.ApplicationListener=cn.ljh.boot.MyListener【注意:】META-INF/spring.factories配置文件通常用于配置一些对Spring Boot本身(SpringApplication)进行定制的组件,比如失败分析器,比如Spring Boot的监听器。application.properties配置文件通常只是对Spring容器中的Bean进行配置。▲ SpringApplication依次触发的事件(1)触发ApplicationStartingEvent事件(2)触发ApplicationEnvironmentPreparedEvent事件。(3)触发ApplicationContextInitializedEvent事件。(4)触发ApplicationPreparedEvent事件。(5)触发ApplicationStartedEvent事件。(6)触发AvailabilityChangeEvent事件。(7)触发ApplicationReadyEvent事件。(8)触发AvailabilityChangeEvent事件。(9)触发ApplicationFailedEvent事件。
自定义失败分析器