SpringBoot
2020-11-11 21:46:51 0 举报
AI智能生成
登录查看完整内容
SpringBoot自动装配原理解析
作者其他创作
大纲/内容
SpringBoot自动装配原理
@SpringBootConfiguration SpringBoot的配置 作用:SpringBoot的配置类 ,标注在某个类上 , 表示这是一个SpringBoot的配置类;
@Configuration 配置
@Component 插件 @Component 这就说明,启动类本身也是Spring中的一个组件而已,负责启动应用!
@EnableAutoConfiguration 自动配置包 开启自动配置功能
AutoConfigurationPackage 自动配置包
@Import({Registrar.class}) 自动注册包 Spring底层注解@import , 给容器中导入一个组件 Registrar.class 作用:将主启动类的所在包及包下面所有子包里面的所有组件扫描到Spring容器 ;
Import({AutoConfigurationImportSelector.class}) 自动导入包的核心
导入类 AutoConfigurationImportSelector 选择器
getAutoConfigurationEntry(AnnotationMetadata annotationMetadata) 获得自动配置的实体
protected Class<?> getSpringFactoriesLoaderFactoryClass() { return EnableAutoConfiguration.class; } 获得了EnableAutoConfiguration标注类(主启动类)
loadSpringFactories(classLoader)
classLoader.getResources(\"META-INF/spring.factories\") 获取项目资源 ClassLoader.getSystemResources(\"META-INF/spring.factories\"); 获取系统资源
Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.3.RELEASE->>spring-boot-autoconfigure-2.3.3.RELEASE.jar ->>spring-boot-autoconfigure-2.3.3.RELEASE.jar->>META-INF->>spring.factories(所有的自动配置类全部都在)
虽然所有的自动化配置类都在但是有些不会生效原因是有 ConditionalOnXXX注解 的存在Conditional里面的所有条件都满足才生效
从这些资源中遍历了所有的nextElement()(自动配置) 遍历完成之后存入Map集合(为属性)中
@ComponentScan 扫描当前主启动类统计的包 作用: 自动扫描并加载符合条件的组件或者bean , 将这个bean定义加载到IOC容器中
SpringBoot执行步骤
3.以前需要配置的东西 如:Spring.xml(Application.xml)和SpringMvc.xml. 在SpringBoot都已经封装完成
4. 解决方案和自动配置所需要的东西都在 Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.3.RELEASE->>spring-boot-autoconfigure-2.3.3.RELEASE.jar这个包下
收藏
0 条评论
回复 删除
下一页