SpringApplication启动

public static void main(String[] args) {SpringApplication.run(MySpringConfiguration.class, args);
}

当应用启动后,你会看到类似这样的控制台输出:

  .   ____          _            __ _ _/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::   v2.0.3.RELEASE2013-07-31 00:08:16.117  INFO 56603 --- [           main] o.s.b.s.app.SampleApplication            : Starting SampleApplication v0.1.0 on mycomputer with PID 56603 (/apps/myapp.jar started by pwebb)
2013-07-31 00:08:16.166  INFO 56603 --- [           main] ationConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@6e5a8246: startup date [Wed Jul 31 00:08:16 PDT 2013]; root of context hierarchy
2014-03-04 13:09:54.912  INFO 41370 --- [           main] .t.TomcatServletWebServerFactory : Server initialized with port: 8080
2014-03-04 13:09:56.501  INFO 41370 --- [           main] o.s.b.s.app.SampleApplication            : Started SampleApplication in 2.992 seconds (JVM running for 3.658)

当应用启动失败,FailureAnalyzer会获取到错误并给出错误提示帮助解决问题,例如端口被占用,你会看到控制台输出:

***************************
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.

应用事件和监听(Application Events and Listeners)

springboot除了spring框架的事件,例如 ContextRefreshedEvent,还有其他的一些应用事件。 一些事件会在ApplicationContext被创建之前触发,所以你不能注册监听到那些@Bean上,因为此时bean还没有被创建。你可以用SpringApplication.addListeners(…​) 这个方法去注册监听。 如果你想要自动注册监听,不管应用是否被创建,你可以通过META-INF/spring.factories文件去添加监听,例如:org.springframework.context.ApplicationListener=com.example.project.MyListener

应用启动时事件被发送的顺序

  1. ApplicationStartingEvent在所有处理之前,除了注册监听和初始化;
  2. ApplicationEnvironmentPreparedEvent发生在当上下文中使用的环境是已知的,但还没创建之前;
  3. ApplicationPreparedEvent 在刷新开始之前触发,但是在bean定义加载之后;
  4. ApplicationStartedEvent在上下文被刷新之后,在任何应用程序和命令行运行器被调用之前;
  5. ApplicationReadyEvent在任何应用程序和命令行运行程序都被调用之后。它指示应用程序已准备好服务请求;
  6. ApplicationFailedEvent如果启动时存在异常会被触发。

web环境

SpringApplication试图为您创建正确类型的应用程序上下文。用于确定WebApplicationType的算法相当简单:

  1. 如果当前使用的springMVC,上下文使用AnnotationConfigServletWebServerApplicationContext
  2. 如果当前使用的不是springMVC而是Spring WebFlux,上下文使用AnnotationConfigReactiveWebServerApplicationContext
  3. 否则,使用AnnotationConfigApplicationContext

下一篇上源码。。。

转载于:https://juejin.im/post/5b4d639ae51d45192562936c

SpringBoot(一)启动相关相关推荐

  1. 官网生成spring-boot工程启动直接结束

    问题描述 http://start.spring.io/ 官网生成的sprin-boot 1.15版本的工程,直接使用命令 mvn:clean spring-boot:run 启动,项目报错并结束 报 ...

  2. 深入springboot怎么启动tomcat

    深入springboot怎么启动tomcat @EnableAutoConfiguration做了哪些事 小总结 Tomcat何时启动的呢? 小总结 这是中高级工程师面试中常问的问题. 知道现在有多卷 ...

  3. Spring、Springboot 应用启动为何这么慢,能否加速?

    本文是对Spring.SpringBoot 应用启动耗时问题的分析总结. 1.Mac 加速 部分jdk版本与mac系统间存在不兼容,导致dns查询缓慢. 详情传送门. 2.较大型应用优化 spring ...

  4. Springboot项目启动后自动打开浏览器访问(超实用)

    Springboot项目启动后自动打开浏览器访问 1.在Springboot项目中每次启动完项目,手动在浏览器输入访问地址太麻烦了.在启动类中加入下方代码,就可高效地在控制台中单击URL访问项目了~ ...

  5. Springboot项目启动前执行数据库初始化脚本

    背景:项目里面遇到了要在springboot项目启动前做数据库初始化的需求.总结一下几种方案: 1.使用flywaydb,启动工程的时候同时初始化脚本.集成倒是不难,主要是要解决bean的顺序加载问题 ...

  6. springboot:SpringBoot项目启动成功,但无法访问且提示404

    当SpringBoot项目启动成功后,访问controller下的接口却发现无法访问,且提示status=404 我的项目中controller下只有一个测试接口,接口名为MainController ...

  7. MySQL8常见客户端和启动相关参数

    MySQL8常见客户端和启动相关参数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL常见的客户端 1>.使用MySQL服务自带的mysql连接工具 2>. ...

  8. Springboot 项目启动后执行某些自定义代码

    Springboot 项目启动后执行某些自定义代码 Springboot给我们提供了两种"开机启动"某些方法的方式:ApplicationRunner和CommandLineRun ...

  9. SpringBoot—项目启动时几种初始化操作及SpringApplication类详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   在使用Spring Boot搭建项目时,启动项目工程,经常遇到一些需要启动初始化数据或者资源的需求,比如提前加载某个配置文件内容 ...

  10. springBoot项目启动去掉多余的启动日志

    springBoot项目启动去掉多余的启动日志: 因为在 LoggingApplicationListener 中设置了项目的日志等级为 level , 在项目的yml文件中添加一行代码 loggin ...

最新文章

  1. JAVA学习day05
  2. Linux内核启动速度优化,嵌入式Linux启动时间优化的秘密之五-Bootloader
  3. JS 移动端触屏滑动
  4. linux shell之$?和得到联合使用命令的结果
  5. 关于 Unity WebGL 的探索
  6. java echarts 散点图,echarts在地图上绘制散点图(任意点)
  7. 网络与并行计算机,并行计算机系统结构网络版 白中英,杨旭东编著.pdf
  8. epoll、mysql概念及简单操作
  9. 2018年软件评测师备考之路
  10. 计算机开机数字键盘解锁,数字键盘怎么解锁
  11. excel交换两列笔记
  12. ucore开启虚拟存储器过程详解
  13. 什么情况下使用$set?
  14. 解决word转PDF文件时图片位置改变和字体格式改变的问题
  15. MISRA C (3)
  16. 最新彩虹Ds网5.8PJ版网站源码
  17. 受疫情影响!美国大量科技初创企业要挨饿或倒闭
  18. GitLab分支合并时,选择use ours是指分支而不是主分支
  19. 营销指南 | 几种常见的微博营销打法
  20. 使用Matlab软件对NDVI进行最大值合成

热门文章

  1. 『摄影欣赏』好萌了!12幅可爱的婴儿照片【组图】
  2. Android 使用字符串动态获取资源ID
  3. 【LeetCode】【数组】题号:*119,杨辉三角2
  4. Android Context简单说明
  5. 解决问题 1474 个,Flink 1.11 究竟有哪些易用性上的改善?
  6. Apache Flink 误用之痛
  7. Java基础---Java---IO流-----对象的序列化、管道流、RandomAccessFile、数据类型的流对象DataStream、ByteArrayStream
  8. 电脑仙人掌机器人作文_暑假有空来练笔——2019各地小学期末作文题目集锦
  9. mysql+1.6安装,CentOS 6.6服务器编译安装lnmp(Nginx1.6.2+MySQL5.6.21+PHP5.6.3
  10. python 纵向输出字符串_Python(五)字符串