网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

SpringBoot自动配置是如何实现如此丰富且灵活的配置方式的?

GG网络技术分享 2025-10-25 17:11 8


下班后闲着没意思看了下 SpringBoot 中的 自动配置,把我的搞懂跟巨大家说下。配置文件能写啥?相信接触过 SpringBoot 的朋友都晓得 SpringBoot 有各种 starter 依赖,想要啥直接勾选加进来就能了。想要自定义的时候就直接在...自己写一个自动配置SpringBoot | 是怎么实现自动配置的?...

传入 loadFactoryNames 方法 java List configurations = SpringFactoriesLoader.loadFactoryNames, getBeanClassLoader); Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you are using a custom pac...

虽然 SpringBoot 的自动配置机制非常智能, 但是有时候我们需要手动配置一些 bean 或者引入一些额外的依赖,这时候我们能通过 application.properties 或者 application.yml 文件来进行配置。

比方说 下面的代码片段展示了一个自定义的自动配置模块:

SpringBoot 采用 **约定巨大于配置** 设计思想,将全部兴许遇到的配置信息提前配置优良,写在 自动配置 的 jar 包中。个个 Starter 巨大体上都拥有...

SpringBoot 的自动配置机制是基于 Spring 框架的条件注解机制实现的。

在老一套的 Spring 项目中, 我们需要手动引入各种依赖,配置各种 bean,想要完成一个轻巧松的 Web 应用程序,兴许需要耗费一巨大堆的时候和精力。

编写自定义的自动配置模块也非常轻巧松, 只需要按照以下步骤操作:

SpringBoot 给了很许多的自动配置模块,但是有时候这些个模块无法满足我们的需求,这时候我们能编写自己的自动配置模块。

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

上述配置文件指定了不启用 DataSourceAutoConfiguration 模块。

SpringBoot自动配置实现 原理 SpringBoot 的核心就是自动配置,自动配置又是基于条件判断来配置 Bean。关于自动配置的源码在 spring-boot-autoconfigure-2.0.3.RELEASE.jar...

本文介绍了 Spring Boot自动配置 原理, 包括起步依赖、自动配置实现方式 等。沉点讲解了 @EnableAutoConfiguration 注解 怎么 通过 AutoConfigurationImportSelector 实现自动配置

一、 springboot是spring 框架做的一系列优化,少许些了一巨大堆繁琐的配置,并给了内置 web 服务器,让程序运行更... 有助于目录的生成 怎么 改变文本的样式插入链接与图片 怎么 插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右 SmartyPants 创建一个自定义列表怎么创建一个注脚注释也是必不可少许的 KaTeX 数学公式新鲜的甘特图功能,丰有钱 你的文章 UML 图表 FLowchart 流程图...

SpringBoot 的自动配置机制是基于 Spring 框架的条件注解机制实现的,它能根据用户的需要,自动的为项目添加或删除一些依赖、配置一些 bean,简化了开发者的干活。我们能通过配置文件来控制自动配置的开关, 也能编写自己的自动配置模块,让 SpringBoot 更优良的习惯我们的应用场景。

由此, SpringBoot 的自动配置机制应运而生,通过预先定制优良一系列的配置规则,能根据用户的需要,自动的为项目添加或删除一些依赖、配置一些 bean,简化了开发者的干活。

查看 @SpringBootApplication 查看 @EnableAutoConfiguration,其作用是利用 AutoConfigurationImportSelector 给容器中导入一些组件。 查看 AutoConfigurationImportSelector, 其中 public String selectImports(AnnotationMetadata ann_SpringBoot是怎么实现自动配置的 SpringBoot 自动配置 实现...

全栈细小5: 这是一篇高大质量的优良文,深厚度搞懂和清晰的表达 方式 使麻烦的手艺概念变得轻巧松搞懂,值得收藏点赞。博主用心很有耐烦, 更有对知识的烫忱和烫喜欢,写了这么实用有效的分享,期盼博主能够光顾我的博客,给宝昂贵的指导! k8s搭建部署(超详...

1. Spring Boot 自动配置 概述2. Spring Boot 自动配置实现 原理3. Spring Boot 自动配置 示例 Spring 是一个功能有力巨大、灵活、可 的企业级开发框架,被广泛应用于各种 Web 应用程序和服务端开发中。只是 在实际的开发中,我们常常需要耗费一巨大堆的时候去配置和集成各种第三方库和框架,这会严沉关系到开发效率和代码质量。

为此, Spring Boot 应运而生,它给了一种轻巧松、飞迅速、开箱即用的 方式 来构建 Spring 应用程序,巨大巨大减轻巧了开发者的干活量,并且还具备良优良的可维护性和可 性。

SpringBoot 的自动配置机制会依据这些个配置文件中的属性值来决定是不是启用某个自动配置模块。

...

接下来 我们在 spring.factories 文件中随便找一个 自动配置 类,来看看 是怎样实现 的。我查看了 MongoDataAutoConfiguration 的源码, 找到它声明了 @ConditionalOnClass 注解,通过看该注解的源码后能找到,这是一个组合了 @Conditional 的组合注解,它的条件类是 OnClassCondition。

然后 我们开头看 OnClassCondition 的源码,找到它并没有直接 实现 Condition 接口,只优良往上找,找到它的父类 SpringBootCondition 实现 了 Condition 接口。

@Configuration public class MyAutoConfiguration { @Bean public MyBean myBean { return new MyBean; }}

classpath 中存在 MyBean 类时SpringBoot 会自动扫描到该配置类并为我们的应用程序自动添加 MyBean bean。

3、 再进入 SpringFactoriesLoader 类的 loadFactoryNames 方法,跳转到 loadSpringFactories 方法 找到 ClassLoader 类加载器指定了一个 FACTORIES_RESOURCE_LOCATION 常量。 4、 然后利用 PropertiesLoaderUtils 把 ClassLoader 扫描到的这些个文件的内容包装成 properties 对象,从 properties 中获取到 EnableAutoConfiguration.class 类对应的值,然后把他们添加在容器中。

打开 META-INF/spring.factories 文件, EnableAutoConfiguration 有一个 =号,=号后面那一串就是这玩意儿项目需要用到的 自动配置 类。

比方说下面的代码片段就是一个轻巧松的自动配置类:

@Configuration @ConditionalOnClass @EnableConfigurationProperties public class DatabaseAutoConfiguration { @Bean @ConditionalOnMissingBean public DataSource dataSource { //配置数据源并返回 }}

当我们需要用数据库, 且 classpath 中有 DataSource 类时SpringBoot 会自动扫描到该配置类,并根据条件注解中的条件来决定是不是需要为我们的应用程序自动创建 DataSource bean。

SpringBoot 中, 个个自动配置类都有一个带有 @Conditional 注解的静态方法,当条件满足时该方法会返回一个配置优良的 bean。SpringBoot 在启动时会扫描全部的自动配置类并根据它们的条件注解来自动配置我们的应用程序。

文章浏览阅读1.7w次点赞15次收藏48次。啥是 SpringBoot自动配置springboot 的自动配置, 指的是 springboot 会自动将一些配置类的 bean 注册进 ioc 容器,我们能需要的地方用 @autowired 或者 @resource 等注解来用它。自动 的表现形式就是我们只需要引我们想用功能的包, 相关的配置我们彻头彻尾不用管,springboot 会自动注入这些个配置 bean,我们直接用这些个 bean 即可。

SpringBoot 是一个基于 Spring 框架的飞迅速开发框架, 它通过约定巨大于配置的方式,能飞迅速的构建出一个高大效、简洁的 Web 应用程序,而不需要过许多关注配置和依赖。

需要注意的是 条件注解是灵活的,我们能通过编写自定义的条件注解或者实现 Condition 接口来定制我们的自动配置规则。

标签:

提交需求或反馈

Demand feedback