SpringBoot(2):运行原理
一. pom.xml
进入父项目,这里才是真正管理SpringBoot应用里面所有依赖版本的地方,SpringBoot的版本控制中心;以后我们导入依赖默认是不需要写版本;但是如果导入的包没有在依赖中管理着就需要手动配置版本了
二. 启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
springboot-boot-starter:就是spring-boot的场景启动器;SpringBoot将所有的功能场景都抽取出来,做成一个个 starter(启动器),只需要在项目中引入这些starter即可,所有相关的依赖都会导入进来,我们要用什么功能就导入什么样的场景启动器即可
这里的 spring-boot-starter-web 帮我们导入了web模块正常运行所依赖的组件
三. 主程序
1 import org.springframework.boot.SpringApplication;
2 import org.springframework.boot.autoconfigure.SpringBootApplication;
3
4 //@SpringBootApplication 来标注一个主程序类 , 说明这是一个Spring Boot应用
5 @SpringBootApplication
6 public class SpringbootDemo01Application {
7
8 public static void main(String[] args) {
9 //将Spring应用启动起来
10 SpringApplication.run(SpringbootDemo01Application.class, args);
11 }
12
13 }
四. @SpringBootApplication
SpringBootApplication:SpringBoot应用
@SpringBootApplication:SpringBoot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用
进入@SpringBootApplication
有三个重要的注解:@ComponentScan;@SpringBootConfiguration;@EnableAutoConfiguration
1. @ComponentScan
ComponentScan:组件扫描
这个注解在Spring中很重要,它对应XML配置中的元素。@ComponentScan的功能就是自动扫描并加载符合条件的组件或者bean,将这个bean定义加载到IOC容器中
2. @SpringBootConfiguration
SpringBootConfiguration:SpringBoot配置
SpringBoot的配置类;标注在某个类上;表示这是一个SpringBoot的配置类
进入@SpringBootConfiguration
3. @EnableAutoConfiguration
EnableAutoConfiguration:自定义配置
@EnableAutoConfiguration告诉SpringBoot开启自动配置功能,这样自动配置才能生效
进入@EnableAutoConfiguration
我们看看 @AutoConfigurationPackage 和 AutoConfigurationImportSelector
先进入@AutoConfigurationPackage
AutoConfigurationPackage:自动配置程序包
@import :Spring底层注解@import ,给容器中导入一个组件 ,导入的组件由 {Registrar.class} 将主配置类 【即@SpringBootApplication标注的类】的所在包及包下面所有子包里面的所有组件扫描到Spring容器
再进入AutoConfigurationImportSelector
AutoConfigurationImportSelector:自动配置导入选择器
@Import({AutoConfigurationImportSelector.class}):给容器导入组件;它将所有需要导入的组件以全类名的方式返回,这些组件就会被添加到容器中;它会给容器中导入非常多的自动配置类 (xxxAutoConfiguration),就是给容器中导入这个场景需要的所有组件,并配置好这些组件
找到SpringFactoriesLoader,进入查看
发现一个配置文件 : META-INF/Spring.factories 的文件
五. spring.factories的配置文件
这里有很多自动配置的文件;这就是自动配置根源所在
SpringBoot在启动的时候从类路径下的 META-INF/spring.factories 中获取 @EnableAutoConfiguration 指定的值,将这些值作为自动配置类导入容器,自动配置类就生效,帮我们进行自动配置工作;以前我们需要自己配置的东西,自动配置类都帮我们解决了
最新文章
- Java基础--Java语言介绍
- project.json
- JavaScript--模块化编程(笔记)
- webview的弹性布局之rem,em
- 创建C#DLL
- 8QQ消息框
- JAVA中断机制详解
- 关于IOS的屏幕适配(iPhone)——Auto Layout和Size Classes
- S0.1 【转】调色板
- Delphi下 Winsock 函数
- 【转】Docker简介与入门
- phpmyadmin创建mysql的存储过程
- odoo11登录之后返回的session信息分析
- 「2017 Multi-University Training Contest 8」2017多校训练8
- jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别详解
- Scrapy爬虫框架中的两个流程
- prime 又一个开源的基于graphql 的cms
- mongoDB oplog的说明及应用
- Element ui tree树形控件获取父节点id
- 将ssh失败的用户放入hosts.deny中
热门文章
- python调试出现报错:SyntaxError: (unicode error) &#39;utf-8&#39; codec can&#39;t decode byte 0xb0 in position 9: invalid start byte
- K8S 部署 SpringBoot 项目(一篇够用)
- 难顶!面试官问我G1垃圾收集器
- SpringBoot 整合 Docker
- 『学了就忘』Linux基础命令 — 39、挂载U盘和挂载NTFS分区
- 大爽Python入门教程 0-1 安装python
- 对于VS2013使控制台暂停的方法
- 单元测试NUnit,mock组件NSubstitute,信号量SemaphoreSlim,异步lock等例子
- [Aizu2993]Invariant Tree
- [bzoj1385]Division expression