BeanFactory
BeanFactory是Spring体系中的一个最底层的容器,提供了获取bean以及bean的属性的方法。
类结构
字段
// 用于取FactoryBean
String FACTORY_BEAN_PREFIX = "&";
方法解析
getBean
Object getBean(String name) throws BeansException;
<T> T getBean(String name, Class<T> requiredType) throws BeansException;
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;
getBean方法,主要通过bean的名称、bean的名称+类型、bean的名称+构造参数、bean的类型、bean的类型+构造参数来获取bean。
getBeanProvider
<T> ObjectProvider<T> getBeanProvider(Class<T> requiredType);
<T> ObjectProvider<T> getBeanProvider(ResolvableType requiredType);
通过bean的类型、ResolvableType获取ObjectProvider。
其他方法
boolean containsBean(String name);
boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
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的类型、获取别名。
这几个比较常用,我们就大概过一下。
ObjectProvider
作用于隐式的构造函数注入,也就是说,在构造方法中,不用@Autowired也可以注入成功。
主要的方法有两个:
- getIfAvailable:实际存在才返回一个实例。
- getIfUnique: 有多个实例时,返回默认的实例(比如primary)
ResolvableType
主要是对泛型的处理,使对泛型的操作更简单
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。