@AutoConfigurationPackage自动包规则原理
1,@AutoConfigurationPackage注解作用
@AutoConfigurationPackage注解作用:自动配置包
2,@AutoConfigurationPackage注解路径
- @AutoConfigurationPackage所在路径:
@SpringBootApplication -> @EnableAutoConfiguration -> @AutoConfigurationPackage - 通过源码查看如下图所示
-
@SpringBootApplication
-
@EnableAutoConfiguration
-
@AutoConfigurationPackage
@AutoConfigurationPackage其实它是一个@Import。@import是什么?@import就是给容器中导入一个组件,这个组件叫什么呢?叫AutoConfigurationPackages.Registrar的组件
- Registrar.java
通过registerBeanDefinitions()方法将对应注解所在的包自动配置到容器中,方法具体如下:
register(registry, new PackageImports(metadata).getPackageNames().toArray(new String[0]));
由于AutoConfigurationPackage注解标注在主类上,得到了主类的包名然后把这个包名最终封装(toArray(new String[0]))到我们的一个数组里面,然后给我们注册(register())进去,相当于我们这个Registrar就是把某一个包下的所有组件批量注册进容器
通过debug可以看到具体的metadata信息。如下图: