@AutoConfigurationPackage注解

查看@AutoConfigurationPackage注解内部源码信息,核心代码具体以下: ```java @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @Import({Registrar.class}) // 导入Registrar中注册的组件 public @interface AutoConfigurationPackage { } ``` 从上述源码能够看出,@AutoConfigurationPackage注解的功能是由@Import注解实现的,它是spring框架的底层注解,它的做用就是给容器中导入某个组件类,例如@Import(AutoConfigurationPackages.Registrar.class),它就是将Registrar这个组件类导入到容器中,可查看Registrar类中registerBeanDefinitions方法,这个方法就是导入组件类的具体实现 : ![image-20191226122946037](./images/image-20191226122946037.png) 从上述源码能够看出,在Registrar类中有一个registerBeanDefinitions()方法,使用Debug模式启动项目, 能够看到选中的部分就是com.lagou。也就是说,@AutoConfigurationPackage注解的主要做用就是将主程序类所在包及全部子包下的组件到扫描到spring容器中。 所以 在定义项目包结构时,要求定义的包结构很是规范,项目主程序启动类要定义在最外层的根目录位置,而后在根目录位置内部创建子包和类进行业务开发,这样才可以保证定义的类可以被组件扫描器扫描 这些内容,是从拉勾教育的《Java工程师高薪训练营》里学到的,课程内容很是全面,还有拉勾的内推大厂服务,推荐你也看看。
相关文章
相关标签/搜索