除了一般的Spring Framework的事件(如ContextRefreshedEvent)以外,SpringApplication
还会发送一些额外的应用程序事件。
一些事件实际上在创建
ApplicationContext
之前就被触发,所以您无法将监听这些事件的监听器注册为@Bean
,不过可以通过SpringApplication.addListeners(…)
或SpringApplicationBuilder.listeners(…)
方法注册它们。 如果您希望那些监听器能被自动地注册而不在意创建应用程序的方式,您可以在项目中添加一个META-INF/spring.factories
文件,并使用org.springframework.context.ApplicationListener
引用您自己的监听器。 org.springframework.context.ApplicationListener=com.example.project.MyListener
随着您的程序运行,应用程序事件按以下顺序发送:
ApplicationStartingEvent
,早于除了注册监听器和初始化器之外的任何处理。Environment
对象后发送ApplicationEnvironmentPreparedEvent
,早于上下文的创建。ApplicationPreparedEvent
,晚于bean定义的加载。ApplicationReadyEvent
。ApplicationFailedEvent
。通常您不需要使用应用程序的事件,但知道这些事件存在可能会有所帮助。在内部,Spring Boot使用事件来处理各种任务。