SpringBoot原理分析
1. 目标
- 理解SpringBoot原理-起步依赖
- 理解SpringBoot自动配置
2. 讲解
2.1 起步依赖
我们可以打开pom.xml中的parent,并查看spring-boot-starter-parent
信息。
从上面的spring-boot-dependencies
的pom.xml中可以看出,坐标的版本,依赖管理,插件管理已经预先定义好了。SpringBoot工程继承Spring-boot-starter-parent后,已经锁定了版本等配置。起步依赖的作用是进行依赖传递 。用啥取啥,随用随取即可。我们开发中彻底不用关心:jar包的版本、依赖等问题了,大大降低版本冲突,版本过期,更新一个jar一下就需要升级一个tree的jar包。
相当于我们之前学习的过程中创建的父工程,在之前创建的父工程中,其中一个功能是用来统一管理jar包。这里的父工程其实作用是一样的。
2.2 自动配置
(1)@SpringBootApplication
该注解是一个组合注解,包括如下注解
- @SpringBootConfiguration:与之前@Configuration注解一样,声明为一个配置类
- @ComponentScan:spring IoC容器的扫描包,默认扫描引导程序下的包以及子包,如果我们写的程序不在该包范围内,可以通过该注解指定。
- @EnableAutoConfiguration:springboot实现自动化配置的核心注解。
(2)@SpringBootConfiguration
通过这段我们可以看出,在这个注解上面,又有一个@Configuration
注解。通过上面的注释阅读我们知道:这个注解的作用就是声明当前类是一个配置类,然后Spring会自动扫描到添加了@Configuration
的类,并且读取其中的配置信息。而@SpringBootConfiguration
是来声明当前类是SpringBoot应用的配置类,项目中只能有一个。所以一般我们无需自己添加。
(3)@EnableAutoConfiguration
@EnableAutoConfiguration
告诉Spring Boot基于你所添加的依赖,去“猜测”你想要如何配置Spring。比如我们引入了spring-boot-starter-web
,而这个启动器中帮我们添加了tomcat
、SpringMVC
的依赖。此时自动配置就知道你是要开发一个web应用,所以就帮你完成了web及SpringMVC的默认配置了!
自动配置:自己一般不用修改配置,默认的配置都给配好了。
3. 小结
- 工程继承了
spring-boot-starter-parent
工程,spring-boot-starter-parent
继承了spring-boot-dependencies
,spring-boot-dependencies
实现了jar包管理和版本锁定。工程引入spring-boot-starter-web
依赖,该工程又依赖了其他web所需的jar包,maven依赖有传递性。 - 通过
@SpringBootApplication
注解完成自动配置,会将当前类作为一个配置类,并且会根据我们所引入的依赖猜测我们的配置,并实现自动配置。