一、Spring Boot Quickstart
  首先Spring Boot是一个框架,基于Spring框架,用来简化Spring应用的开发,其次Spring Boot的口号是是约定大于配置,这是因为使用基于Spring、Spring MVC开发 Web 项目有很多缺点,例如非常多的配置文件、繁琐的部署流程以及复杂第三方集成等。Spring Boot可以化繁为简,非常快速的创建以及部署一个产品级的应用。
Spring Boot 可以:
使用IDEA的Spring Initializr 可以快速创建Spring Boot工程
在quickstart包下新建controller包,增加LilithController
@RestController
public class LilithController {
@RequestMapping("/lilith")
public String lilith(){
return "Hello Lilith!";
}
}
运行qickstart包下的QuickstartApplication
可以看出Tomcat已经在8080端口重新启动,并且征程Application启动。在浏览器输入 localhost:8080/lilith
浏览器显示了在代码中返回的信息。
相比通过Spring、Spring MVC创建项目需要大量的Spring配置以及Spring MVC配置,Spring Boot只需要添加一个spring-boot-starter-web依赖以及一个Controller类就可以完成,无需任何配置。
Spring Boot不仅可以快速创建应用,还可以快速部署应用
点击右侧maven侧边栏中的Lifecycle下的package命令即可对应用进行打包
在终端进行项目应用下的target目录,使用java -jar运行JAR包
java -jar spring-boot-quickstark-0.0.1-SNAPSHOT.jar
同样可以成功启动应用
使用Spring Initializr创建的项目中主要包含了
创建项目时选择了spring-boot-starter-web,该依赖并没有指定版本号,Spring Boot是如何确定依赖的版本号的?
pom.xml文件中唯一有版本号的地方是parent标签中的内容,导入了一个spring-boot-starter-parent作为父依赖,而spring-boot-starter-parent的父依赖是spring-boot-dependencies。
spring-boot-dependencies在properties标签中定义了很多依赖的版本号
再看pom.xml文件中dependency标签下的spring-boot-starter-web又依赖的哪些包?
依赖了Spring MVC、Spring Boot Tomcat Starter以及一些其他的starter,导入了web模块正常运行所需要的组件。
什么是Starters? Starters即启动器,是Spring Boot将功能场景组成的,项目中只要引入一个Starters,相关依赖都会导入进来。
查看Spring Boot官方文档中Starters
主程序类上的@SpringBootApplication注解非常重要,没有该注解程序就无法启动,该注解表名项目是一个Spring Boot项目,Spring Boot会通过运行@SpringBootApplication注解标注的类的main方法来启动应用
查看@SpringBootApplication注解源码
设置断点
选中“new PackageImports(metadata).getPackageNames()”点击鼠标右键,选择Evaluate Expression
点击Evaluate
Registrar的作用是将主程序类所在包以及所有子包下的Bean全都注册到Spring容器中
在getCandidateConfigurations方法左侧打上断点,并运行Dubg模式
会给容器中导入非常多的自动配置类,有了这些配置类就不用再手写配置了,那么这些配置是在哪里配置的呢?
重启启动Debug模式,来到AutoConfigurationImportSelector的第123行,点击Step Into;再点击Step Into选择进入loadFactoryNames方法内部;点击Step Over;到SpringFactoriesLoader类的第132行点击Step Into 进入loadSpringFactories方法内部。SpringFactoriesLoader类第136行这里首先会从缓存中获取classLoader,判断不为空之后直接返回所有配置类(去除之前的断点,将断点打在SpringFactoriesLoader类第136行,此时在进行debug,result为空),如果为空则会从配置文件中获取配置类
点击进入FACTORIES_RESOURCE_LOCATION,可以确定Spring Boot的自动配置类都存放在”META-INF/spring.factories“目录下
Spring Boot包含的自动配置类
Spring Boot在启动时从类路径下的”META-INF/spring.factories“获取EnableAutoConfiguration指定的值,将这些值代表的类导入Spring容器中,自动配置就会生效
可以看出Spring Boot中Spring MVC的自动配置类包含了DispatchServlet等原先Spring MVC XML配置文件的内容。
以上就是Spring Boot的版本控制以及依赖管理✿✿ヽ(°▽°)ノ✿!