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这一步。

相关推荐
Ivanqhz4 分钟前
矩阵引擎的数据流模式与 BM1684X 架构
java·服务器·网络·深度学习·神经网络
小蒜学长4 分钟前
大学生健康饮食的智慧管理系统(代码+数据库+LW)
java·后端·springboot·大学生·健康饮食
计算机毕设定制辅导-无忧学长6 分钟前
《基于SpringBoot的中学教师数字胜任力测评网站的设计与实现》
java·vue.js·spring boot·mysql·中学教师数字胜任力测评网站
智慧物业老杨12 分钟前
人机协同的物业服务重构:技术落地路径与系统化思考
java·大数据·人工智能·重构·系统架构
小蒜学长13 分钟前
基于Java的论坛数据可视化分析系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·数据可视化·论坛系统
许彰午28 分钟前
52-useWebSocket自动重连
java·低代码·架构
青山木30 分钟前
RocketMQ 入门到原理(一):整体架构与消息的生命周期
java·分布式·后端·中间件·架构·rocketmq
黑马程序员毕设36 分钟前
基于微信小程序的二手交易平台设计与实现报告
前端·人工智能·spring boot·后端·考研
xcl092537 分钟前
上海24小时自助健身房系统软件开发实战与架构解析
java·spring boot
张宜强1 小时前
023 SpringBoot实现萌宠集市
java·课程设计