type
status
date
slug
summary
tags
category
icon
password

SpringBoot自动装配到底有什么用?

SpringBoot 项目在启动时会通过 @SpringBootApplication 注解来去扫描资源目录下的 Spring.factories 文件(3.x 后改用./spring/xxx.imports),这里可以指定自动装配类,扫描出来后可以加载到 Spring 容器中。
那么问题来了,这玩意到底有什么用,我们真用得到吗?确实用不太到……除非有这样一种场景。
假如说我们的项目中需要用到两种工具类,这两种工具列的类名和接口完全一致,但是实现内容却天差地别,并且只能用其中一个,用了 A 就不能用 B。这时候客户 A 说要用 A 的方案,客户 B 说要用 B 的方案,我们谁都招惹不起,只能打两个包,一个 A,一个 B。但这么做不够优雅,其实我们完全可以让 A 存在的时候 B 不执行,B 存在的时候 A 不执行就可以了,而这就需要用到自动装配类了。
因为如果我们在 @SpringBootApplication 上排除一个类(或多个类)
那么这个类必须是自动装配类,否则就会报错:
那么就好办了:
  1. 把 A 类和 B 类都分别做成自动配置类
  1. 在 application.yaml 或配置中心中指定要使用哪种类型的类
  1. 定义两个数组,一个数组放入 A 类和 B 类所需要的依赖,另一个数组类型为 boolean,用于存储哪个依赖需要加载,需要的为 true,不需要的为 false。
    1. 当 yaml 中为 A 时,第二个数组中就会把第一个数组中对应索引的、B 类需要的依赖全部为 false,其余为 true。
  1. 然后返回第二个数组,让 @SpringBootApplication 自己慢慢排除去吧
SpringBoot自动配置原理Docker
Loading...
林明菁
林明菁
一个思念的人
公告

🎉欢迎你来到我的博客🎉

去右下角歌单里点首歌听吧
因为博客里没什么好看的

🔰版本号:NotionNext 4.8.3🔰