戴着假發的程序員出品 抖音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類。