| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> SpringBoot自动装配原理-3 -> 正文阅读 |
|
[Java知识库]SpringBoot自动装配原理-3 |
目录 2.1、@SpringBootConfiguration注解内容: 2.4、以DataSourceAutoConfiguration为例,了解SpringBoot如何自动装配 1、Application典型springBoot应用的启动,一般在项目的根路径下面,一般是XXXApplication的入口类,入口会有main方法,这个是一个标准的java程序的入口。
@SpringBootApplication:该注解开启组件扫描和自动装配。 SpringApplication.run():负责启动引导应用程序。 2、@SpringBootApplication注解@SpringBootApplication注解是SpringBoot的核心注解,它实际上是一个组合注解,将三个主要注解组合在一起。
@SpringBootConfiguration:表明当前是一个配置类,可以在类中配置bean,类似于SpringBoot提供的@Configuration。 2.1、@SpringBootConfiguration注解内容:
@Configuration注解是Spring框架提供的注解,表明该类是java的配置类,在SpringBoot中使用@SpringBootConfiguration注解来代替@Configuration,作用一样,仅仅是做了一层包装。/2。 2.2、@ComponentScan注解该注解对应xml配置中的元素,功能主要是自动扫描并加载符合条件的组件或者是bean的定义,最终将bean装配到IOC容器中,默认Spring框架实现是从声明@ComponentScan所在类的package进行扫描,所以SpringBoot中的启动最好放在root package下,这样能够完成当前包以及其子包中所有注解的扫描。 2.3、EnableAutoConfiguration注解该注解声明形式如下:
EnableAutoConfiguration借助于@Import注解,收集和注册特定场景相关的bean的定义。 自动装配中核心点借助于@Import({EnableAutoConfigurationImportSelector.class}),借助于EnableAutoConfigurationImportSelector类,使用该类将所有符合条件的@Configuration配置都加载到SpringBoot的容器中。借助于Spring框架原有的工具,SpringFactoriesLoader的支持。 SpringFactoriesLoader类主要完成类的加载,主要是从指定的配置文件MENT-INF/spring.factories中加载配置。 ?这是SpringBoot中Autoconfiguration依赖包下MENT-INF/spring.factories的一部分,通过加载Autoconfiguration的配置,通过反射来实例化对应的@Configuration,再判断是否需要加载具体信息。
2.4、以DataSourceAutoConfiguration为例,了解SpringBoot如何自动装配在自动装配类中或有很多条件性注解: @ConditionalOnBean:当容器里有指定的bean的条件下。 @ConditionalOnClass:当类路径下有指定的类的条件下。 @ConditionalOnProperty:指定的属性是否有指定的值。
@EnableAutoConfiguration会导入EnableAutoConfigurationImportSelector类,而这个类的selectImports通过SpringFactoriesLoader得到大量配置类,而每一个配置上则根据条件配置来做出决策,以实现自动装配。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:02:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |