1.SpringBoot是什么?
Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置。
2.SpringBoot的特点
-
为基于Spring的开发提供更快的入门体验
-
开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求
-
提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等
-
SpringBoot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式
3.SpringBoot的核心功能:
- 起步依赖(简化依赖配置)
起步依赖本质上是一个Maven项目对象模型(Project Object
Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。
- 自动配置(简化常用工程相关配置)
SpringBoot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是Spring自动完成的。
- 辅助功能(内置服务器,……)
除了上面的功能,其实SpringBoot程序还有其他的一些优势,比如我们没有配置Tomcat服务器,但是能正常运行,这是SpringBoot入门程序中一个可以感知到的功能,也是SpringBoot的辅助功能之一。一个辅助功能都能做的这么6,太牛了。
4.SpringBoot的父项目
作用:依赖的版本控制
点进去这个父项目可以看到,它还继承了 spring-boot-starter-parent
我们再进spring-boot-starter-parent,发现里面管理了差不多200中依赖
5.SpringBoot的starter
starter定义了使用某种技术时对于依赖的固定搭配格式,也是一种最佳解决方案,使用starter可以帮助开发者减少依赖配置
例如:项目中的pom.xml定义了使用SpringMVC技术,但是并没有写SpringMVC的坐标,而是添加了一个名字中包含starter的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
点进去可以看到,里面搭配了很多的依赖
6.SpringBoot的启动类
整个项目的入口, 整个项目启动, 运行启动类的main()方法
启动类包含:
- 调用SpringApplication.run()
- 启动类添加@SpringBootApplication
查看一下 SpringApplication.run(Springbootdemo01Application.class, args);
也就是说SpringApplication.run()方法,最终是得到了一个Spring的ApplicationContext对象。初始化操作。
7.@SpringBootApplication注解
点进这个注解
查看@SpringBootConfiguration 注解
这说明 @SpringBootConfiguration 也是来源于 @Configuration,二者功能都是将当前类标注为配置类,并将当前类里以 @Bean 注解标记的方法的实例注入到srping容器中,实例名即为方法名
查看@EnableAutoConfiguration注解
再点击@AutoConfigurationPackage 注解
AutoConfigurationPackages.Registrar: 扫描启动类所在包以及后代包下所有的注解
8.内置服务器
Tomcat 是在spring-boot-starter-web依赖中加载进来的,
SSM项目: Spring容器在tomcat服务器启动的时候, 创建Spring容器, 把Spring容器对象保存到Tomcat的Application域
SpringBoot项目: Spring容器: 在SpringApplication.run() 方法内创建:Tomcat以对象的形式运行, Tomcat对象保存在Spring容器, 先创建容器,然后把Tomcat的核心对象交给Spring管理, 运行tomcat, 从Spring容器中,获取Tomcat对象, 调用方法运行.