20200206——springboot 原理初探

pom.xml
spring-boot-dependencies 存放了核心依赖在父工程中
我们再写或者引入一些springboot依赖的时候,不需要指定版本,因为有这些版本仓库

启动器
就是springboot的启动场景
比如spring-boot-starter-web 他就会帮我们自动导入web环境所有的依赖
springboot会将所有功能场景,都变成一个个的启动器
我们想要使用什么功能,找到对应的启动器 ‘starter’

主程序

@SpringBootApplication 标注这个类是一个springboot的应用

SpringApplication.run(Springboot01HelloworldApplication.class, args);

是一个静态方法,将这个springboot启动

注解SpringBootApplication

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
@SpringBootConfiguration

Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration

springboot的配置

@Configuration代表 spring配置类
说明是一个spring的组件

@EnableAutoConfiguration
自动导入配置

@AutoConfigurationPackage
自动配置包

@Import({AutoConfigurationImportSelector.class})
导入选择器

在这里插入图片描述
在这里插入图片描述

springboot所有自动配置都是在启动的时候扫描并加载:‘spring.factories’所有的配置类都在这里,但是不一定生效,要判断条件是否成立,只要导入了对应的start,就有对应的启动器了。有启动器,自动装配就会生效,就配置成功了。

springboot在启动的时候,从类路径下面的/meta-inf/spring.factories获取指定的值。
将这些自动配置的类导入容器,自动配置就会生效,帮我们进行自动配置
以前我们需要自动配置的东西,springboot帮我们配置完成了。
整合javaee,解决方案和自动配置的东西都在spring-boot-autocongfigure包下面
它会把所有需要的导入的组件,以类名的方式返回,这些组件就会被添加到容器
容器中会存在非常多的xxxAutoConfigure的文件(@Bean),就是这些类给容器中导入了这个场景需要的所有组件,

发布了716 篇原创文章 · 获赞 41 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_36344771/article/details/104197236