1、獲取 applicationContext,通過ApplicationAware自動注入
2、getBeansOfType、getBeanNamesForType
//key位 beanName,value為bean Map<String, Interface> result = applicationContext().getBeansOfType(Interface.class); //返回 beanName 的String 數組 String[] result = applicationContext().getBeanNamesForType(Interface.class);
注:這種方法除了可以獲取實現【接口】的所有Bean,也可以獲取所有繼承【抽象類/類】的所有Bean,如下
Map<String, AbstractObject> result = applicationContext().getBeansOfType(AbstractObject.class);
補充:java通過Class的isAssignableFrom方法
注釋:【a.isAssignableFrom(b)】有兩個Class類型的類象,一個是調用isAssignableFrom方法的類對象(對象a),以及方法中作為參數的這個類對象(對象b),這兩個對象如果滿足以下條件則返回true,否則返回false:
a對象所對應類信息是b對象所對應的類信息的父類或者是父接口,簡單理解即a是b的父類或接口
a對象所對應類信息與b對象所對應的類信息相同,簡單理解即a和b為同一個類或同一個接口
