springboot自动装配原理

springboot开发简单,约定大于配置,核心就是自动装配。

自动装配原理:
1.pom.xml
1)spring-boot-dependencies 依赖在父工程中
2)引入springboot引入不需要指定版本,就是因为这些版本仓库

2.启动器

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

1)启动器,就是启动的场景。
2)比如spring-boot-starter-web,它就会自动帮我们引入web依赖。
3)springboot会帮我们所有功能场景变为一个个启动器。
4)需要是用什么功能,找到对应的功能的启动器进行starter

3.主程序

@SpringBootApplication
public class SpringbootApplication {

    public static void main(String[] args) {
        SpringApplication.run(Springboot2Application.class, args);
    }
}

@SpringBootApplication中有3个注解比较重要:

1.@SpringBootConfiguration springboot的配置
@SpringBootConfiguration点进去
2.@Configuration是一个配置类
@Configuration点进去
3.@Conponent 这是一个spring的组件

1.@EnableAutoConfiguration 自动导入配置
1.1@AutoConfigurationPackage 自动配置包
1.1.1 @Import({Registrar.class}) 导入注册包
1.2@Import({AutoConfigurationImportSelector.class}) 导入选择器,自动导入包的核心
1.2.1List<String> configurations = this.getCandidateConfigurations(annotationMetadata, attributes); 获取所有配置
1.2.2 getAutoConfigurtionEntry 获取自动配置实体
1.2.3 loadFactoryNamesClass 获取所有的配置名
1.2.3.1获取项目资源  META-INF/spring.factories从这里获取配置
1.2.3.2获取系统资源
1.2.4 从这些资源中遍历了nextElement,遍历完成之后进行了封装,properties给我们使用

1.@ComponentScan 扫描当前主启动类的同级的包

结论:springBoot所有自动配置都是在启动的时候扫描并加载。spring.factories自动配置类都在里面,但是不一定生效,里面还有一个核心注解:ConditionOnClass 满足这个,才能生效。然后导入对应的start,就有了对应的启动器,有了启动器,我们对应的配置就会生效。

1.springboot 在启动的时候,从类路径下的/META-INF/spring.factories获取指定的值。
2.将这些自动配置的类导入容器,自动配置就会生效,帮我进行自动配置。
3.以前我们需要自动配置的东西,现在springboot帮我们做了!
4.整合JAVAEE,解决方案和自动配置的东西都在spring-bootautoconfigure
5.它会吧所有的需要导入的组件,以类名的方式返回,这些组件就会被添加到容器中。
6.容器中存在很多的xxxAutoConfiguration的文件,就是这些类给容器导入场景需要的组件。并自动配置。@Configuration @JavaConfig
7.有了自动配置类,就免了手动编写的配置工作。

SpringApplication.run(Springboot2Application.class, args);

run();
1.判断是普通项目还是web项目
2.推断当前的主类
3.run()中有一些监听器,它会处理bean
4.全面接管springMVC的配置

xxxx.AutoConfiguration: 自动配置类 ,给容器中添加组件。
xxxx.properties:封装配置文件中相关的属性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值