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類。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM