SpringBoot自动装配基本原理

如果有一个第三方库希望在 Spring Boot 应用启动时自动配置一些功能,它可以在自己的 JAR 包中提供一个 spring.factories 文件,并在其中指定相关的自动配置类。当应用引入了这个第三方库的依赖后,Spring Boot 就能根据 spring.factories 中的配置来自动应用相应的配置。

简单搜索一下spring.factories

打开看看

装配的大致过程是下面这样的

  1. 本项目写一个配置类,引入第三方的装配类
less 复制代码
@Configuration // 本项目的配置类
@Import(MyImportSelector.class)
static class Config {
    @Bean
    public Bean1 bean1() {
        return new Bean1("本项目");
    }
}
  1. 第三方的装配类通过实现ImportSelector接口,重写selectImports()方法,在该方法中指定在spring.factories的键值,等到SpringBoot执行注解解析时,bean就会被自动引入。
typescript 复制代码
    static class MyImportSelector implements DeferredImportSelector {
        @Override
        public String[] selectImports(AnnotationMetadata importingClassMetadata) {
            List<String> names = SpringFactoriesLoader.loadFactoryNames(MyImportSelector.class, null);
            return names.toArray(new String[0]);
        }
    }

举例

以引入Mybatis相关bean的自动配置类MybatisAutoConfiguration为例,

MybatisAutoConfiguration被注解@Configuration注解,所以会在启动时被SpringBoot扫描,扫描以后,根据相关条件注释,来决定是否自动装配bean。

那么之前提到的import注解在哪里呢?其实在EnableConfigurationProperties点进去看看。

可以得出一个不靠谱的结论,使用Enable打头的注解,大部分都包含使用import来导入bean这一步。

相关推荐
晴虹1 分钟前
lecen:一个更好的开源可视化系统搭建项目--介绍、搭建、访问与基本配置--全低代码|所见即所得|利用可视化设计器构建你的应用系统-做一个懂你的人
前端·后端·低代码
苏叶新城2 分钟前
SpringBoot 3.5 JPA投影
java·spring boot·后端
Vic101018 分钟前
Spring AOP 常用注解完全指南
java·后端·spring
Halo_tjn8 分钟前
Java IO流实现文件操作知识点
java·开发语言·windows·算法
神奇小汤圆25 分钟前
告别繁琐!MapStruct-Plus 让对象映射效率飙升,这波操作太香了!
后端
CryptoRzz27 分钟前
StockTV API 对接全攻略(股票、期货、IPO)
java·javascript·git·web3·区块链·github
小菜鸡ps28 分钟前
【flowable专栏】网关类型
后端·工作流引擎
王中阳Go29 分钟前
字节开源 Eino 框架上手体验:Go 语言终于有能打的 Agent 编排工具了(含 RAG 实战代码)
人工智能·后端·go
零_守墓人30 分钟前
Patroni 中备份恢复和数据迁移
后端
用户15658459250531 分钟前
Go技术专家进阶营 从代码开发到架构设计,开启Go技术专家之路
后端