2.24@ComponentScan注解的basePackageClasses 属性

戴着假发的程序员出品  抖音ID:戴着假发的程序员  欢迎关注

[查看视频教程]

basePackageClasses 用来指定某个类所在包下的所有组件。springboot中的主应用类就是一个BasePackageClass。

看案例:

我们准备如下结构的类:

其中每个类源码:

Person类:在beans包下

 1 /**
 2  * @author 戴着假发的程序员
 3  *  
 4  * @description
 5  */
 6 @Component
 7 public class Person {
 8     public Person(){
 9         System.out.println("实例化Person类");
10     }
11 }

Car类:在otherbeans包下:

 1 /**
 2  * @author 戴着假发的程序员
 3  *  
 4  * @description
 5  */
 6 @Component
 7 public class Car {
 8     public  Car(){
 9         System.out.println("实例化Car类 ");
10     }
11 }

Truck类:在otherbeans包下:

 1 /**
 2  * @author 戴着假发的程序员
 3  *  
 4  * @description
 5  */
 6 @Component
 7 public class Truck {
 8     public Truck(){
 9         System.out.println("实例化Truck");
10     }
11 }

Bus类:在otherbeans.pub包下

 1 /**
 2  * @author 戴着假发的程序员
 3  *  
 4  * @description
 5  */
 6 @Component
 7 public class Bus {
 8     public Bus(){
 9         System.out.println("实例化Bus");
10     }
11 }

配置类,制定扫描beans包下的所有类,另外通过basePackageClasses指定Car.calss(这里注意basePackageClasses属性是一个数组,可以同时配置多个class)

1 /**
2  * @author 戴着假发的程序员
3  *  
4  * @description
5  */
6 @Configuration
7 @ComponentScan(basePackages = "com. st.dk.demo6.beans",basePackageClasses = Car.class)
8 public class AppConfig {
9 }

测试:

1 @Test
2 public void testBasePackageClasses(){
3     ApplicationContext ac =
4             new AnnotationConfigApplicationContext(AppConfig.class);
5 }

结果:

我们会发现,spring不光帮我们加载了beans包下的Person类,而且同时加载了Car所在包下的Car和Truck类,而且加载Car所在包的子孙包下的Bus类。

posted @ 2020-10-12 08:27  戴着假发的程序员0-1  阅读(5479)  评论(0编辑  收藏  举报