SpringBoot 自动配置

Springboot 自动配置

关注 “弋凡”(YiFan)微信公众号吧 记录简单笔记 做你的最爱

Springboot 是什么呐?

我管她是什么,好用就行了啊!!!
spring相信大家都用过了,那一堆的配置,用起来就麻烦,好比是饭面,但是你需要自己加调料啦
springboot 就是简化配置 好比一碗香飘飘牛肉面,哇吃起来真香,用起来也一定很简单吧~

配置文件官方文档
添加链接描述

自动配置原理

  • spring-boot-dependencies:核心依赖在父工程中

    • 我们在添加Springboot依赖时不需要指定版本号,
    • 就是因为在这些版本在 spring-boot-dependencies 中指定
  • @ComponentScan 扫描包

  • SpringBoot启动的时候加载主配置类 @SpringBootApplication

注解

@SpringBootConfiguration   Springboot的配置
	@Configuration  spring配置类
	@Component 说明这也是一个spring的组件
	
@EnableAutoConfiguration   自动配置
	@AutoConfigurationPackage 自动配置包
		@Import(AutoConfigurationPackages.Registrar.class)  自动配置 包注册
	@Import(AutoConfigurationImportSelector.class) 自动导入选择配置
		获取所有的配置 
        List<String> configurations =
        	getCandidateConfigurations(annotationMetadata, attributes);
@ComponentScan  扫描当前启动类同级的包
  • 获取候选的配置
protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
		List<String> configurations = 	SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(),
				getBeanClassLoader());
		Assert.notEmpty(configurations,
          "No auto configuration classes found in METAINF/spring.factories. If you "
				+ "are using a custom packaging, make sure that file is correct.");
		return configurations;
	}
  • 核心自动配置

结论:

  • springboot 所有的自动配置都是在启动的时扫描加载
  • 配置类都在 spring.factories 里面 但是不一定都生效 要满足条件(@ConditionalOnClass)
  • (只要导入了对应的 start ,就有了对应的启动器,有了启动器,自动配置就生效了)

1,springboot项目启动的时候会自动加载 METAINF/spring.factories 下的配置

2,自动将这些配置类导入容器中,自动配置就会生效,帮我们自动配置

3,以前我们需要的自动配置 springboot就帮我们自动配置了

4,springboot所有的配置的东西都在 spring-boot-autoconfigure-2.2.5.RELEASE.jar 中

Springboot @Conditional 条件注解

在这里插入图片描述

快来关注“弋凡”微信公众号吧

快来关注“弋凡”微信公众号把

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值