Spring Boot 启动原理解析(一)

2,189 阅读2分钟

前言

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

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

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

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

单刀主题

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

从启动清单文件中我们知道有两个很重要的参数jar包启动类Main-Class及应用程序启动类Start-Class,其中Start-Class直指我们程序中的main函数类Application

在断点进入Application.class代码,我们会执行了两个方法:一个是initialize()初始化启动参数变量,最重要的是决定是否加载web容器
第二个run()加载所需容器并启动
当你的微服务启动成功时你会看到
当你看到你控制台输出Tomcat started on port(s): 8080 (http)你会有这样的疑问,我什么web服务器参数都没配置,怎么就占用了8080端口启动,接着就会有以下疑问:要是我电脑8080端口被占用了Spring Boot Tomcat 不能正常启动,该怎么配置其他端口或是怎么配置其他个性化的参数。由于篇幅限制这些我都会在下期Spring Boot 启动原理解析中详解Tomcat加载启动,以及Spring Boot是如何加载配置的。

末尾

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

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