前言
在@EnableAutoConfiguration、@SpringBootApplication注解中,有看到标注@AutoConfigurationPackage注解。
实质上,它负责保存标注相关注解的类的所在包路径。使用一个BasePackage类,保存这个路径。然后使用@Import注解将其注入到ioc容器中。这样,可以在容器中拿到该路径。
@AutoConfigurationPackage
首先看下@AutoConfigurationPackage的声明

表示对于标注该注解的类的包,应当使用AutoConfigurationPackages注册。
接着看Registrar这个类。

重点看下registerBeanDefinitions方法。
方法的第二个参数通过new PackageImport(metadata).getPackageName()方法设置。
接着看下PackageImport的构造器方法。

metadata:实际上是StandardAnnotationMetadata实例。
metadata#getClassName():获取标注@AutoConfigurationPackage注解的类的全限定名。
ClassUtils.getPackageName(…):获取其所在包。
然后回去看register(…)方法。

走else的逻辑。
构造了一个BackPackages实例,进行注册。

通过查看它的构造器方法,证明了上面所说的。
Spring Boot的@AutoConfigurationPackage深入解析
本文探讨了Spring Boot中的@AutoConfigurationPackage注解,详细解释了它如何记录包含此类的包路径,并通过@Import注解将其引入IOC容器,以确保能够检索到该路径下的组件。
1187

被折叠的 条评论
为什么被折叠?



