Spring Boot 启动原理解析(一)

Spring Boot 启动原理解析(一)_第1张图片

前言

作为一位菜鸟级的码农,深感知识匮乏之窘境。在为此烦恼之时一朋友向我推荐了Spring boot源码系列,站在巨人肩旁上学习之余向大家分享一些学有所得的干货。在了解Spring Boot之前可先了解下 什么是Spring Boot 和Spring Boot与Spring MVC的区别是什么? 从而对Spring boot 有一个清晰的定位。

我们先看下百度百科的Spring Boot特点介绍

  1. 简化Maven配置,自动配置Spring、零配置启动
  2. 内置tomcatjettyundertow 三大web容器
  3. 将应用打包成为一个jar/war 通过jar启动应用

码农的福音战士,简化了开发前期的配置工作,极大的提高了码农们的生产力。

单刀主题

Spring Boot的一个及其吸引人的特性是将应用打包成jarwar包直接启动。我们可以先了解下jar解压包的MANIFEST.MF

Spring Boot 启动原理解析(一)_第2张图片

从启动清单文件中我们知道有两个很重要的参数 jar包启动类 Main-Class及应用程序启动类 Start-Class,其中 Start-Class直指我们程序中的 main函数类 Application
Spring Boot 启动原理解析(一)_第3张图片

在断点进入 Application.class代码,我们会执行了两个方法:一个是 initialize()初始化启动参数变量,最重要的是决定是否加载web容器
Spring Boot 启动原理解析(一)_第4张图片

第二个 run()加载所需容器并启动
Spring Boot 启动原理解析(一)_第5张图片

当你的微服务启动成功时你会看到
Spring Boot 启动原理解析(一)_第6张图片

当你看到你控制台输出 Tomcat started on port(s): 8080 (http)你会有这样的疑问,我什么web服务器参数都没配置,怎么就占用了 8080端口启动,接着就会有以下疑问:要是我电脑 8080端口被占用了 Spring Boot Tomcat 不能正常启动,该怎么配置其他端口或是怎么配置其他个性化的参数。由于篇幅限制这些我都会在下期 Spring Boot 启动原理解析中详解 Tomcat加载启动,以及 Spring Boot是如何加载配置的。

末尾

知识源于点滴积累。每当回首过往码农路,他人问我技术问题而不能答上时而深感自行惭愧。与大家分享些技术干货,作为一个自我成长的切入点。本人才疏学浅,写的不对的或分析不够透彻的地方还望大家大刀予以斧正,也欢迎大家关注我的见证我的成长,名为柴码

给自己定一小目标:每两周或一周一更

你可能感兴趣的:(Spring Boot 启动原理解析(一))