Spring源码-BeanFactory
org.springframework.beans.factory
BeanFactory接口本身只提供了基础的功能,其余扩展功能都依赖子接口,体现了面向对象六大原则——接口隔离原则。
BeanFactory源码:
/**
* 获取Bean实例
**/
// @param name 指定Bean名称
Object getBean(String name) throws BeansException;
// @param name 指定Bean名称
// @param requiredType 指定Bean类型,可以是接口或超类
<T> T getBean(String name, Class<T> requiredType) throws BeansException;
// @param name 指定Bean名称
// @param args 构造Bean实例时传入的参数
Object getBean(String name, Object... args) throws BeansException;
<T> T getBean(Class<T> requiredType) throws BeansException;
<T> T getBean(Class<T> requiredType, Object... args) throws BeansException;
//判断是否包含指定名称的Bean
boolean containsBean(String name);
//判断是单例还是多例
boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
//判断给定名字的Bean是否和给定类型匹配
boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException;
//根据给定Bean名字获取类型
Class<?> getType(String name) throws NoSuchBeanDefinitionException;
//根据给定Bean名字获取别名
String[] getAliases(String name);
/**
* 获取ObjectProvider对象,待补充
**/
<T> ObjectProvider<T> getBeanProvider(Class<T> requiredType);
<T> ObjectProvider<T> getBeanProvider(ResolvableType requiredType);
可以看到都是针对单个Bean的简单基础方法。