pom.xml
1.其中存放了大量核心依赖再父工程中
2.我们在写或者引入spring boot的某些依赖的时候,不需要指定版本,就是因为这些版本仓库
启动器
在pom.xml的spring-boot-dependencies中,用以设置启动场景
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.2.6.RELEASE</version> </dependency>
比如spring-boot-starter-web帮我们自动导入web环境的所有依赖
springboot会把所有的web场景都变成一个个的启动器
我们需要使用什么功能,就只需要找到相应的启动器即可
主程序
package com.example.demo3;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//本身就是spring的一个组件
//程序入口
@SpringBootApplication//标注这个类是一个Spring boot的应用
public class Demo3Application {
public static void main(String[] args) {
//将spring boot应用启动
SpringApplication.run(Demo3Application.class, args); } }
注解
@SpringBootConfiguration表示其为springboot的配置类 @Configuration表示其为一个spring配置类 @Component表示其本质还是一个spring组件类 @EnableAutoConfiguration自动配置 @AutoConfigurationPackage自动配置包 @Import(AutoConfigurationPackages.Registrar.class)自动配置“包注册” @Import(AutoConfigurationImportSelector.class)自动配置导入选择
原理初探
脑图整理
结论:springboot的所有自动配置都是在启动的时候被扫描并加载的:spring.factories所有的自动配置都在这里边,但是不一定生效,要判断条件是否成立,只要导入了对应的start,就有对应的启动器了,有了启动器,我们自动装配就会生效,然后就配置成功了。
启动的时候,从路径下/META-INF/spring.factories获取指定的值
将这些自动配置类导入容器,自动配置类就会生效,帮我们进行自动配置
以前我们需要自动配置的东西,现在springboot帮我们做了
整合JavaEE,解决方案和自动配置的东西都在spring-boot-autoconfigure-包下
它会把所有需要导入的组件,以类名的方式返回,这些组件就会被添加到容器
容器中也会存在非常多的xxxAutoConfigure类给容器中导入了这个场景中的所有组件
注解,是自动装配的核心