上一篇[SpringApplication(1)]

下一篇[23、SpringApplication(3)]

英文原文:https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-spring-application.htmlGitHub:https://github.com/jijicai/Spring/tree/master/spring-boot

23.3、自定义 SpringApplication

如果你不喜欢 SpringAppliction 的默认设置,那么你可以创建一个本地实例并定制它。例如,要关掉 banner,可以写:

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

注释:传递给 SpringApplication 的构造函数参数是 Spring bean 的配置源。在大多数情况下,这些都是对 @Configuration 类的引用,但它们也可以是对 XML 配置或应该扫描的包的引用。

也可以使用 application.properties 文件配置 SpringApplication。详见第 24 章:外部化配置。

有关配置选项的完整列表,请参阅 SpringApplication Javadoc。(https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/api/org/springframework/boot/SpringApplication.html)

23.4、Fluent 构建器 API

如果需要构建 ApplicationContext 层次结构(具有父子关系的多个上下文),或者如果希望使用”fluent“构建器 API,则可以使用 SpringApplicationBuilder。

SpringApplicationBuilder 允许你将多个方法调用链接在一起,并包括 parent 和 child 方法,这些方法允许你创建层次结构,如下面示例所示:

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

注释:创建 ApplicationContext 层次结构时有一些限制。例如,Web 组件必须包含在子上下文中,并且父上下文和子上下文都使用相同的环境。有关详细信息,请参阅 SpringApplicationBuilder Javadoc。(https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/api/org/springframework/boot/builder/SpringApplicationBuilder.html)

23.5、应用程序事件和监听器

除了常见的 Spring 框架事件(如ContextRefreshedEvent)之外,SpringApplication 还发送一些附加的应用程序事件。

注释:有些事件实际上是在创建 ApplicationContext 之前触发的,因此不能将监听器注册为 @Bean。你可以使用 SpringApplication.addListeners(...) 方法或 SpringApplicationBuilder.listeners(...) 方法注册它们。如果希望自动注册这些监听器而不管创建应用的方式,则可以将 META-INF/spring.factories 文件添加到项目中并且通过使用 org.springframework.context.ApplicationListener 键来引用监听器,如下面示例所示:

org.springframework.context.ApplicationListener=com.example.project.MyListener

应用程序运行时,将按以下顺序发送应用程序事件:

(1)ApplicationStartingEvent 在运行开始时但在任何处理之前发送,监听器和初始化器的注册除外。

(2)ApplicationEnvironmentPreparedEvent 在上下文中使用的环境已知时但在创建上下文之前发送。

(3)ApplicationPreparedEvent 只在开始刷新之前但在加载 bean 定义之后发送。

(4)ApplicationStartedEvent 在刷新上下文之后但在调用任何应用程序和命令行的运行器之前发送。

(5)ApplicationReadyEvent 在调用任何应用程序和命令行运行器之后发送。这表明应用已准备好服务请求。

(6)ApplicationFailedEvent 在启动出现异常时发送。

提示:你通常不需要使用应用程序事件,但知道它们的存在是很方便的。在内部,Spring Boot 使用事件来处理各种任务。

应用程序事件通过使用 Spring 框架的事件发布机制发送。此机制的一部分确保在子上下文中发布给监听器的事件也在任何祖先上下文中发布给监听器。因此,如果应用程序使用 SpringApplication 实例的层次结构,则监听器可能会接收到同一类型应用程序事件的多个实例。

为了允许监听器区分其上下文的事件和子上下文的事件,它应该请求注入其应用程序上下文,然后将注入的上下文与事件的上下文进行比较。上下文可以通过实现 ApplicationContextAware 注入,如果监听器是 bean,则可以使用 @Autowired 注入。

上一篇[SpringApplication(1)]

下一篇[23、SpringApplication(3)]

springboot监听器_Spring Boot中文参考指南(2.1.6)23.5、应用程序事件和监听器相关推荐

  1. 禅道外部消息提示_Spring Boot中文参考指南(2.1.6)34、消息传递

    上一篇[33.1.7.Redis] 下一篇[34.3.Apache Kafka 支持] 英文原文:https://docs.spring.io/spring-boot/docs/2.1.6.RELEA ...

  2. Spring Boot 中文参考指南

    Spring Boot 版本 2.7.8 原文:https://docs.spring.io/spring-boot/docs/2.7.8/reference/htmlsingle/ - 笔者注: S ...

  3. apache2.4.6支不支持jsp_Spring Boot中文参考指南(2.1.6)50、Kotlin 支持

    上一篇[49.4.测试你的自动配置] 下一篇[52.启用生产就绪功能] 英文原文:https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/refer ...

  4. cleanmymac3.9.6_Spring Boot中文参考指南(2.1.6) 46.3.6、使用 JMX

    上一篇[46.3.测试 Spring Boot 应用程序] 下一篇[46.3.11.自动配置的Spring WebFlux测试] 英文原文:https://docs.spring.io/spring- ...

  5. SpringBoot中文文档 SpringBoot中文参考指南 SpringBoot中文参考文档 springboot中文文档 springboot中文

    SpringBoot中文文档 SpringBoot中文参考指南 SpringBoot中文参考文档 springboot中文文档 springboot中文 SpringBoot中文文档 SpringBo ...

  6. Spring Boot 3.0.0-M1 Reference Documentation(Spring Boot中文参考文档) 9-16

    9. 数据 Spring Boot与多个数据技术集成,包括SQL和NoSQL. 9.1. SQL数据库 Spring Framework提供扩展支持用于与SQL数据工作,从使用JdbcTemplate ...

  7. springboot学习_Spring Boot 开源学习项目代码日爆爆爆

    最新要学习 Spring Boot ,以前也用过部分的框架爱,最近试用之后便一发不可收拾的爱上它.使用 Spring Boot 来开发项目则只需要非常少的几个配置就可以搭建起来一个 Web 项目,并且 ...

  8. Servlet 应用程序事件、监听器

    Web容器管理Servlet/JSP相关的生命周期,若对HttpServletRequest对象.HttpSession对象.ServletContxt对象在生成.销毁或相关属性设置发生的时机点有兴趣 ...

  9. springboot传入json和文件_SpringBoot中文参考指南(2.1.6)29.1.13、CORS 支持

    上一篇[29.开发 Web 应用程序(1)] 下一篇[29.2 Spring WebFlux 框架] 英文原文:https://docs.spring.io/spring-boot/docs/2.1. ...

最新文章

  1. 电容触摸按键IC AT42QT1070
  2. Apache Commons工具集简介
  3. 船舶定位实时查询系统_真趣:IDC机房人员定位系统,位置实时监测,巡检路线智能规划...
  4. Mysql数据类型之整数型的一些细节你get到了吗?
  5. mysql查询补丁更新_OS:服务器系统补丁及数据库补丁更新说明
  6. IdentityServer4之持久化很顺手的事
  7. php可变变量讲解,PHP可变变量实例详解
  8. MVC判断用是否登录了平台
  9. Windows 查看程序占用的端口
  10. 蓝桥杯 算法训练 Sticks
  11. 2006吴山庙会-怎么都是人啊?
  12. IoT技术架构与安全威胁
  13. List之LinkedList与ArrayList区别
  14. 【游戏开发创新】Unity狗屁不通文章生成器阐述点赞的意义,可生成文字长图保存到本地(Unity | 附源码 | Text转Texture长图 | 详细教程)
  15. keil删除工程_安装及卸载keil5
  16. 屏幕录像专家 7.5下载+注册机
  17. c语言中十六进制减法,二进制十进制十六进制
  18. 用计算机专业起情侣网名,带对方名字的情侣网名最新精选
  19. 【树莓派不吃灰】基础篇① 半小时搭建树莓派3B可运行环境(不需要显示器,不需要网线)
  20. 使用JAVA面向对象语言,完成五子棋应用功能设计

热门文章

  1. 笔记本电脑下载matlab没有图标,win7系统安装matlab后找不到图标打不开如何解决...
  2. matlab veristand,matlab和NI VeriStand联合仿真环境搭建(一)
  3. java混淆工具zelix比较_vscode,java环境
  4. win7下mysql读写分离_Windows环境下Mysql 5.7读写分离简单记录
  5. oracle下定时删除归档脚本
  6. android平台代号、版本、API 级别和 NDK 版本
  7. anconda设置镜像源_管理2000+Docker镜像,Kolla是如何做到的
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的bbs论坛管理系统
  9. 剑指offer:矩阵中的路径(递归回溯法DFS类似迷宫)
  10. Fiddler-学习笔记-远程抓包