当前位置:首页 » 存储配置 » spring怎么自己配置

spring怎么自己配置

发布时间: 2023-07-21 13:59:36

‘壹’ SpringBoot入门-自动配置详解

通过查看SpringBootApplication的源码,会发现这是一个组合注解,其中最重要的注解是@EnableAutoConfiguration

先看@AutoConfigurationPackage这个注解

里面导入了一个Registrar类,这个类实现了bean的扫描与注册,那它扫描的是哪个包呢?

只要看PackageImports这个类,会发现如果没有用@ComponentScan指定包名,他默认扫描的是启动类的包名,比如你的启动类是cn.hollycloud.App,它扫描的就是cn.hollycloud

再来看这个类,这个类用来加载所有的自动配置项

通过上面的源码我们知道spring把所有配置项都导进来了,但我们并不需要所有的功能。比如说我开发的时候并不需要mongodb相关功能,但spring也会把相关配置项加载进来,怎么关闭该功能呢?看下mongodb的自动配置源码

重点是@ConditionalOnClass(MongoClient.class),这个的意思是只有类路径中存在MongoClient.class,也就是我们导入mongo相关依赖,这个配置项才会开启,否则不会注册这个bean。

同时我们看下面有个MongoClient的bean,spring很贴心地为我们初始化好了mongo的客户端,我们直接使用就行了,如果想自定义客户端怎么办呢?也很简单,直接自己初始化一个mongo客户端放入spring容器就行了,@ConditionalOnMissingBean的意思是如果你没有自定义客户端它才会自己生成一个,是不是很方便,这个叫条件化注解

现在我们来实现一个简单的自动配置类来巩固下。

可以想象一下我们是一家机器人公司,专门制造高端机器人,很受客户欢迎,但是配置机器人过于复杂,这点老是被客户诟病,你的领导想让你提供给客户开机即用的产品,该如何实现呢?

首先我们创建一个机器人控制终端,这是控制终端可以操控机器人说话

接下来是自动配置项,可以自动注册配置终端

我们想要给客户一点自由,可以让客户自由配置机器人的名字和颜色,而不用管机器内部复杂的操作

接下来最重要的一步是把自动配置项放到类路径的/META-INF/spring.factories里面

然后客户直接引用你提供的依赖就能直接控制机器人了,而不用管复杂的初始化操作

来控制机器人说话吧,直接注入robot就能使用了,不需要客户关心复杂的初始化操作了

如果客户想为机器人改个名字也很简单,直接在application.yml配置下就行了

这个例子虽然很简单,但是说明了自动配置的工作原理,spring内置的自动配置虽然复杂,但原理都一样的。

参考代码: https://gitee.com/huatin/java-test 下的AutoConfigTest模块

热点内容
饥荒联机版服务器搭建程序 发布:2025-03-16 02:55:18 浏览:684
win7如何访问共享 发布:2025-03-16 02:55:14 浏览:37
centosphp升级 发布:2025-03-16 02:42:04 浏览:52
绝地求生体验服为什么服务器已满了 发布:2025-03-16 02:42:03 浏览:706
服务器电脑机房是干嘛的 发布:2025-03-16 02:30:47 浏览:489
龙贝格算法c语言 发布:2025-03-16 02:26:28 浏览:102
c语言字符串读入 发布:2025-03-16 02:21:23 浏览:478
python爬虫开发环境 发布:2025-03-16 02:19:55 浏览:627
androidondestory 发布:2025-03-16 02:12:49 浏览:863
软件源码侵权 发布:2025-03-16 02:06:54 浏览:288