SpringBoot自动装配原理


拒绝白嫖,白嫖有罪,点个赞再走呗

自动配置

pom.xml

spring-boot-dependencies:核心依赖在父工程中!
我们在写或者引入一些SpringBoot依赖的时候,不需要指定版本,就是因为有这些版本的仓库

启动器

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

启动器:简单的来说就是SpringBoot的启动场景;
比如spring-boot-starter-web,他就会帮我们自动导入web环境所有的依赖!
springboot会将所有的工程场景,都封装成一个个的启动器,我们需要使用寿命功能,就只需要找到对应的启动器就可以了。
下面是spring官网的启动器的网址:
https://docs.spring.io/spring-boot/docs/2.4.4/reference/html/using-spring-boot.html#using-boot-starter

主程序

@SpringBootApplication
public class DemoApplication {

    //将SpringBoot应用启动
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

注解

@SpringBootConfiguration   //spting的配置
	@Configuration  //spring配置类
		@Component  //说明也是spring的一个组件
@EnableAutoConfiguration   //自动导入包
	@AutoConfigurationPackage   //自动配置包
		@AutoConfigurationPackage   //  自动配置包注册
	@Import({AutoConfigurationImportSelector.class})  //   自动导入选择器
		AutoConfigurationImportSelector:自动导入选择器
			getAutoConfigurationEntry()获得自动配置的实体
			getCandidateConfigurations()获取候选的配置
				protected Class<?> getSpringFactoriesLoaderFactoryClass() {
				return EnableAutoConfiguration.class;
				}标注了EnableAutoConfiguration注解的类
				
				public static List<String> loadFactoryNames(Class<?> factoryType, @Nullable ClassLoader classLoader) {
				ClassLoader classLoaderToUse = classLoader;
				if (classLoader == null) {
				classLoaderToUse = SpringFactoriesLoader.class.getClassLoader();
				}
				String factoryTypeName = factoryType.getName();
				return (List)loadSpringFactories(classLoaderToUse).getOrDefault(factoryTypeName, Collections.emptyList());
				}获取所有的加载配置

				loadSpringFactories
					classLoader.getResources("META-INF/spring.factories");获取资源
						spring-boot-autoconfigure-2.2.0.RELEASE.jar
							META-INF
								spring.factories:所有的自动配置都在这里
								这么多自动配置类为什么有的没有生效,需要导入对应的start才能生效
								核心注解:@ConditionalOnXXX如果里面的条件都满足,才会生效

总结

springboot所有的自动配置都是在启动的时候启动并加载:所有的自动配置都在spring.factories,所有的自动配置类都在文件中,但是不一定生效,要满足条件才能加载,只要导入了对应的start,就有对应的启动器了,有了启动器,我们的自动装配就会生效,然后就自动配置完成了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值