前言
今天,我们将开启对Spring-AI系列源码的讲解。请大家不急不躁,我会渐渐深入,每次专注于一个知识点,以防让人感到困惑。
起首,源码的讨论自然离不开自动装配。有人可能会问,之前已经讲解过这个内容了,为什么还要再谈一次?这是因为自Spring Boot 3.3.x版本以来,自动装配的机制发生了一些变革。尽管如此,凭借我们已具备的源码阅读能力,今天我们将简单回首一下新版Spring怎样处置惩罚自动装配的问题。毕竟,随着版本的不停升级,我们必须适应新的机制,避免仍用旧有的思维去解读源码。
版本依靠
要深入探索Spring-AI,起首需要设置多个关键依靠。以下是必不可少的焦点依靠:- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>3.3.1</version>
- <relativePath/>
- </parent>
- <dependency>
- <groupId>org.springframework.ai</groupId>
- <artifactId>spring-ai-zhipuai-spring-boot-starter</artifactId>
- <version>1.0.0-M2</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.ai</groupId>
- <artifactId>spring-ai-bom</artifactId>
- <version>1.0.0-M2</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
复制代码 在完成引入之后,我们便能够顺畅地检察源码逻辑了。同时,请务必下载相关的文档资料,以便更好地理解和分析。
自动装配
之前我们已讨论过,SpringBoot的自动装配机制默认查找的是包内的META-INF/spring.factories文件。以下展示的是早期版本的装配源码,敬请注意。- protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
- List<String> configurations = SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(),
- getBeanClassLoader());
- Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you "
- + "are using a custom packaging, make sure that file is correct.");
- return configurations;
- }
复制代码 在此,loadFactoryNames 方法会去查找 META-INF/spring.factories 文件。然而,当我查找自动装配的源码时,费了很大劲却未能找到这个文件。
这显然存在问题,第一步就陷入了困境。因此,我重新回到原点,重新查找了自动装配的源码。这一次,我更换了查抄的文件,以下是相关的源码:- protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
- List<String> configurations = ImportCandidates.load(AutoConfiguration.class, getBeanClassLoader())
- .getCandidates();
- Assert.notEmpty(configurations,
- "No auto configuration classes found in "
- + "META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. If you "
- + "are using a custom packaging, make sure that file is correct.");
- return configurations;
- }
复制代码 最终,我发现了问题的根源。原来这里更改为 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件。至此,自动装配机制中又新增了一个需要记住的文件名称。所幸,这个名称也并不难以影象。接下来检察了一下,发现实际内容与之前的文件相似。
好的,装配的准备工作已经充分完成。接下来的章节将深入探讨更为细致的内容。
总结
在今天的讲解中,我们从Spring-AI的源码出发,渐渐解构了自动装配的演变与实践。固然自动装配的焦点概念自以往并无太大改变,但Spring Boot 3.3.x版本带来的机制调整,确实值得我们重新审视。通过回首新版的自动装配实现方式,我们不仅加深了对新机制的理解,也为后续的源码分析奠定了坚固的底子。
随着版本的迭代,保持对新技术的敏锐洞察,将是我们不停探索与进步的关键。盼望大家能够跟随我们的步伐,深入领悟每一个知识点,最终在源代码的浩瀚宇宙中找到属于自己的那一片星辰。
我是努力的小雨,一名 Java 服务端码农,潜心研究着 AI 技术的奥秘。我热爱技术交流与分享,对开源社区充满热情。同时也是一位腾讯云创作之星、阿里云专家博主、华为云云享专家、掘金优秀作者。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |