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
上排除一个类(或多个类)那么这个类必须是自动装配类,否则就会报错:
那么就好办了:
- 把 A 类和 B 类都分别做成自动配置类
- 在 application.yaml 或配置中心中指定要使用哪种类型的类
- 定义两个数组,一个数组放入 A 类和 B 类所需要的依赖,另一个数组类型为 boolean,用于存储哪个依赖需要加载,需要的为 true,不需要的为 false。
- 当 yaml 中为 A 时,第二个数组中就会把第一个数组中对应索引的、B 类需要的依赖全部为 false,其余为 true。
- 然后返回第二个数组,让
@SpringBootApplication
自己慢慢排除去吧
- 作者:林明菁
- 链接:https://blog.lxuan.fun/article/SpringBootzdzpddysmy
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。