您的位置:首页 > 编程语言 > Java开发

Spring Bean工厂继承关系和源码分析

2015-11-30 20:47 441 查看
Bean工厂继承关系图



最上层的接口BeanFactory

package org.springframework.beans.factory;

import org.springframework.beans.BeansException;
import org.springframework.core.ResolvableType;

public interface BeanFactory {

String FACTORY_BEAN_PREFIX = "&";

Object getBean(String name) throws BeansException;

<T> T getBean(String name, Class<T> requiredType) throws BeansException;

<T> T getBean(Class<T> requiredType) throws BeansException;

Object getBean(String name, Object... args) throws BeansException;

<T> T getBean(Class<T> requiredType, Object... args) throws BeansException;

boolean containsBean(String name);

boolean isPrototype(String name) throws NoSuchBeanDefinitionException;

boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;

boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException;

Class<?> getType(String name) throws NoSuchBeanDefinitionException;

String[] getAliases(String name);

}


该接口定义了获取获取Bean的方法。判断是否存在某个Bean。

ListableBeanFactory为可列表的BeanFactory,可以枚举所有的Bean而不是一个一个获取Bean通过Bean name。

public interface ListableBeanFactory extends BeanFactory {

boolean containsBeanDefinition(String beanName);

int getBeanDefinitionCount();

String[] getBeanDefinitionNames();

String[] getBeanNamesForType(ResolvableType type);

String[] getBeanNamesForType(Class<?> type);

String[] getBeanNamesForType(Class<?> type, boolean includeNonSingletons, boolean allowEagerInit);

<T> Map<String, T> getBeansOfType(Class<T> type) throws BeansException;

<T> Map<String, T> getBeansOfType(Class<T> type, boolean includeNonSingletons, boolean allowEagerInit)
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;
}


通过上面的方法就能获取到Bean工厂中的Bean

HierarchicalBeanFactory 接口定义了工厂的分层,同样继承了BeanFactory。

BeanFactory getParentBeanFactory(); //获取父工厂
boolean containsLocalBean(String name);//根据Bean name判断本地工厂是否存                                       //在Bean
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: