先看看SpringBoot的主配置类的main方法:

main方法运行了一个run()方法,进去run方法看一下:

/**
* 静态帮助程序,可用于从中运行{@link SpringApplication}
* 使用默认设置指定来源。
* @param primarySource加载的主要源
* @param args应用程序参数(通常从Java main方法传递)
* @返回正在运行的{@link ApplicationContext}
*/
public static ConfigurableApplicationContext run(Class<?> primarySource,
String... args) {
return run(new Class<?>[] { primarySource }, args);
}

我们可以看到run方法注释上写了使用了默认的设置,这些默认的设置就是从Application启动类上面的注解

@SpringBootApplication 中来的。

并且run方法返回了一个正在运行的上下文对象:

ApplicationContext

进入注解@SpringBootApplication中可以看到:

注解中默认的四个方法不用关注。

先看看@ComponentScan 这个注解,它是当容器启动的时候,用来扫描启动类底下所有的类以及所有子包下面的类。

再看看@SpringBootConfiguration这个注解,可以看到它是一个接口,上面有一个@Configuration注解,说明它是一个容器。

从Spring3.0开始,@Configuration用于定义配置类,可替换xml配置文件,@Configuation等价于<Beans></Beans>。

接着看@EnableAutoConfiguration,这是用来开启自动装配的注解。

进入@EnableAutoConfiguration,看到一个@Import,点进去看,注释说明这是用来导入@Configuration的。

@Import的入参  AutoConfigurationImportSelector.class是一个选择器(Selector),用于选择自动装配的类。

进入选择器AutoConfigurationImportSelector,可以看到它调用了一个获取自动装配实体的方法:

getAutoConfigurationEntry

进入获取自动装配实体的方法( getAutoConfigurationEntry ),可以看到它调用了一个获取默认配置的方法,返回值是一个字符串列表。这里把它成为:默认的配置列表。

进入getCandidateConfigurations方法中,通过断言可以知道配置信息是从

META-INF/spring.factories

中来的。最终它们是一个字符串类型的List。

通过IDEA软件的定位功能,可以找到当前方法getCandidateConfigurations所在jar包。

打开spring.factories文件,可以看到springBoot为用户实现的大量自动装配的类:

找到 EmbeddedWebServerFactoryCustomizerAutoConfiguration ,可以看到SpringBoot为用户内置的Tomcat

最后看下spring.factories文件配置的自动装配类@ServletWebServerFactoryAutoConfiguration,在这里Tomcat被启动了。

SpringBoot怎么自动部署到内置的Tomcat的?的更多相关文章

  1. springboot学习笔记:6.内置tomcat启动和外部tomcat部署总结

    springboot的web项目的启动主要分为: 一.使用内置tomcat启动 启动方式: 1.IDEA中main函数启动 2.mvn springboot-run 命令 3.java -jar XX ...

  2. Windows Azure 自动伸缩已内置

     WindowsAzure平台提供的主要优点之一是能够在有需要时快速缩放云中的应用程序以响应波动.去年7月以前,您必须编写自定义脚本或使用其他工具(如Wasabi或MetricsHub)来启用自动 ...

  3. python基础-requests模块、异常处理、Django部署、内置函数、网络编程

     网络编程 urllib的request模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP的响应. 校验返回值,进行接口测试: 编码:把一个Python对象编码转 ...

  4. SpringBoot(十四)_springboot使用内置定时任务Scheduled的使用(一)

    为什么使用定时? 日常工作中,经常会用到定时任务,比如各种统计,并不要求实时性.此时可以通过提前设置定时任务先把数据跑出来,后续处理起来更方便. 本篇文章主要介绍 springboot内置定时任务. ...

  5. Spring Boot 定制与优化内置的Tomcat容器

    1.Spring Boot定制与优化内置Tomcat容器. > 内置的容器有三个分别是Undertow.Jetty.Tomcat,Spring Boot 对这三个容器分别进行了实现,它们上层接口 ...

  6. 使用Maven自动部署Java Web应用到Tomcat服务器

    学习如何使用Maven,我推荐一本工具书,<maven the definitive guide>.在这本工具书手中,详细介绍了maven的使用思想,并且提供了从基本到复杂的具体项目应用. ...

  7. 使用Maven自动部署Java Web项目到Tomcat问题小记

    导读 首先说说自己为啥要用maven管理项目,一个直接的原因是:我在自己电脑上开发web项目,每次部署到服务器上时都要经历如下步骤: 首先在Eclipse里将项目打包成war包 将服务器上原来的项目文 ...

  8. spring boot修改内置容器tomcat的服务端口

    方式一 在spring boot的web 工程中,可以使用内置的web container.有时需要修改服务端口,可以通过配置类和@Configuration注解来完成. // MyConfigura ...

  9. 阻止YII 1.0自动加载内置JQUERY库

    有些时候我们会在项目中用到很多js库, 因为Yii 1.0框架会默认自动加载一些自带核心库, 很容易引起冲突问题, 下面的代码就展示了如何在Yii 1.0框架下取消jQuery自动加载. Open C ...

随机推荐

  1. Oracle与Mysql的高级查询与难点sql

    一.连接查询  1.内连接      内连接用于返回满足连接条件的所有记录.默认情况下,在执行连接查询时如果没有指定任何连接操作符,那么这些连接查询都属于内连接. Sql代码   1.   SELEC ...

  2. Leetcode 063 不同路径二

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为" ...

  3. 面试的绝招(V1.0)

    <软件自动化测试开发>出版了 测试开发公开课培训大讲堂 微信公众号:测试开发社区 测试开发QQ群:173172133 咨询QQ:7980068 咨询微信:zouhui1003it

  4. CSS中怎么设置元素水平垂直居中?

    记录怎么使用text-align与vertical-align属性设置元素在容器中垂直居中对齐.text-align与vertical-align虽然都是设置元素内部对齐方式的,但两者的用法还是有略微 ...

  5. Cenots 7 安装mysql cluster 通过rpm 包

    环境:Cenots 7 MG:192.168.0.105 NDB:192.168.0.108 NDB:192.168.0.109 SQL:192.168.0.111 SQL:192.168.0.107 ...

  6. Ubuntu 18.04 国内的 apt 源

    一.Ubuntu 18.04 国内的 apt 源 1. 阿里源 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted univers ...

  7. web前端性能优化一

    作为一个前端会允许自己的作品,在非硬性条件下出现卡顿? 肯定是不会,所以给大家梳理一下前端性能的优化. 一:文件操作 html文件压缩: 删除无用的空格和换行符等其他无意义字符 css文件压缩: 删除 ...

  8. spring——AOP原理及源码(三)

    在上一篇中,我们创建并在BeanFactory中注册了AnnotationAwareAspectJAutoProxyCreator组件.本篇我们将要探究,这个组件是在哪里以及何时发挥作用的. 调试的起 ...

  9. CSS的常用单位 %和 vw vh 和 box-sizing:border-box; 和flex简介

    一.% 理解: %号是CSS中的常用单位,它是相对于父容器而言的.如:一个父容器的宽是100px,给它的子元素一个10%,那么子元素的宽就是100px的10% 10px. 效果图: (利用%设置了li ...

  10. 开源网站云查杀方案,搭建自己的云杀毒-搭建ClamAV服务器

    开源网站云查杀方案,搭建自己的云杀毒 搭建ClamAV服务器 1        前言: 在上一篇我们已经演示了整个方案,传送门<开源网站云查杀方案,搭建自己的云杀毒>:https://ww ...