spring原始碼閱讀(五)-Spring Import註解使用
阿新 • • 發佈:2021-10-15
說明
我們再讀原始碼時常常發現這個註解,近期在讀dubbo原始碼 就使用到了此註解,究竟有什麼用,在spring boot專案中尤其多
Import的作用
實現將打了@Import的註解注入到容器,以及@Import指定的類注入到容器
import的三種使用方式
直接注入指定類的方式
1.定義一個打上了Import的類
/** * student和BeanRegisterConfig都會初始化進入容器 student的beanName為類的全名稱 */ @Import({Student.class}) public class BeanRegisterConfig { }
2.main測試
public static void main(String[] args) { AnnotationConfigApplicationContext applicationContext=new AnnotationConfigApplicationContext(BeanRegisterConfig.class); //這裡的引數代表要做操作的類 String [] names=applicationContext.getBeanDefinitionNames(); for (String name: names) { System.out.println(name); } }
3.輸出
匯入ImportSelector
1.定義一個ImportSelector類
public class BeanRegisterImportSelector implements ImportSelector { /** * * @param importingClassMetadata 註解元資料 * @return 返回值為要初始化的類的全名稱 */ @Override public String[] selectImports(AnnotationMetadata importingClassMetadata) {for (String typeName : importingClassMetadata.getAnnotationTypes()) { System.out.println("typeName" + typeName); } //告訴容器初始化importtest.bean.Student return new String[]{"importtest.bean.Student"}; } }
1.定義一個打上了Import的類