@AutoConfigurationPackage注解真正的作用

@AutoConfigurationPackage注解主要用于记录SpringBoot主类的包名,作为自动配置时的基包,它并不直接进行组件扫描,而是将包名存入容器中,供第三方组件如Mybatis使用来扫描指定包内的实体类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@AutoConfigurationPackage注解作用

我们知道@EnableAutoConfigurationspringboot实现自动配置的关键注解。其由@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)

构成。

这里我们讨论下@AutoConfigurationPackage的作用,作者才疏学浅,望大家多多指正。

@AutoConfigurationPackage构成

image-20230724010634982

由源码不难看出,@AutoConfigurationPackage就是通过@Import导入了AutoConfigurationPackages.Registrar。我们继续跟进去,其中new PackageImports(metadata).getPackageNames().toArray(new String[0])返回的就是springboot主类所在位置packageNames

image-20230724011039572

我们继续进入register()方法内,该方法将当前注解标识的包名packageNames存入组件中加入到容器里;也就是说@AutoConfigurationPackage就是将前文说的packageName存入bean注册到容器中。

值得注意的是,很多人说@AutoConfigurationPackage是用来扫描组件的和@ComponentScan类似,这种说法是错的,前文已经说过了@AutoConfigurationPackage只是存了主类所在位置packageName,并不具有扫描的功能。

image-20230724011432617

紧接着有引入一个问题,这个packageName有什么用?

答:这个packageName将当作第三方组件自动配置时的基包basePackage,第三方调用basePackage用于扫描basePackage包内的自身实体类加入到容器里。

举例:在MybatisAutoConfiguration中通过AutoConfigturationPackage.get()就获得到了basePackage,供后续使用。

image-20230724012727363

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值