(2)ListableBeanFactory extends BeanFactory
- 功能说明
总结:提供获取满足条件的bean对象列表和bean相关属性列表;
----扩展BeanFactory接口功能
(1)实现可枚举所有bean实例,而不是根据客户端请求通过beanname一个一个查找实例;
(2)BeanFactory实现预加载所有bean定义(如基于xml的工厂)可实现该接口;
(3)如果这是一个层次结构的bean工厂,返回值将不会把任何层次接口考虑进入,而是仅仅是当前工厂的bean定义
可通过BeanFactoryUtils帮助考虑祖先工厂中的beans。
- 功能列表
int getBeanDefinitionCount();
# 返回当前工厂中定义的bean的数量,不考虑此工厂可能参与的层次结构
String[] getBeanDefinitionNames();
# 返回当前工厂中定义的所有bean的名字
String[] getBeanNamesForType(ResolvableType type);
String[] getBeanNamesForType(Class<?> type);
String[] getBeanNamesForType(Class<?> type, boolean includeNonSingletons, boolean allowEagerInit);
# allowEagerInit = true : 工厂实例将被初始化 ;= false : 未加工的对象将被检查
<T> Map<String, T> getBeansOfType(Class<T> type) throws BeansException;
注解相关:
String[] getBeanNamesForAnnotation(Class<? extends Annotation> annotationType);
Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> annotationType) throws BeansException;
<A extends Annotation> A findAnnotationOnBean(String beanName, Class<A> annotationType)
throws NoSuchBeanDefinitionException;
下一章: 《spring4.2源码分析(一)组件-BeanFactory系列(3-HierarchicalBeanFactory)》