package org.springframework.beans.factory;
public interface
BeanFactory
{
//
用来引用一个实例,或把它和工厂产生的
Bean
区分开
//
就是说,如果一个
FactoryBean
的名字为
a
,那么,
&a
会得到那个
Factory
String
FACTORY_BEAN_PREFIX
=
"&"
;
/*
*
四个不同形式的
getBean
方法,获取实例
*/
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
;
//
是否存在
boolean
containsBean
(
String
name
);
//
是否为单实例
boolean
isSingleton
(
String
name
)
throws
NoSuchBeanDefinitionException
;
//
是否为原型(多实例)
boolean
isPrototype
(
String
name
)
throws
NoSuchBeanDefinitionException
;
//
名称、类型是否匹配
boolean
isTypeMatch
(
String
name
,
Class
<?>
targetType
)
throws
NoSuchBeanDefinitionException
;
//
获取类型
Class
<?>
getType
(
String
name
)
throws
NoSuchBeanDefinitionException
;
//
根据实例的名字获取实例的别名
String
[]
getAliases
(
String
name
);
}
在
BeanFactory
里只对
IOC
容器的基本行为作了定义,根本不关心你的
Bean
是如何定义怎样加载的。正
如我们只关心工厂里得到什么的产品对象,至于工厂是怎么生产这些对象的,这个基本的接口不关心。
源码说明:
4
个获取实例的方法。
getBean
的重载方法。
4
个判断的方法。判断是否存在,是否为单例、原型,名称类型是否匹配。
1
个获取类型的方法、一个获取别名的方法。根据名称获取类型、根据名称获取别名。一目了
然!
总结:
这
10
个方法,很明显,这是一个典型的工厂模式的工厂接口。
ListableBeanFactory
可将
Bean
逐一列出的工厂