Spring IoC容器的设计——BeanFactory应用场景
1.BeanFactory提供的是最基本的IoC容器的功能,关于这些功能定义,我们可以在接口BeanFatory中看到。
2.BeanFactory接口定义了IoC容器最基本的容器的形式,并且提供了IoC容器所应该遵守的最基本的服务契约,同时,这也是我们使用IoC容器所应遵守的最底层和最基本的编程规范,这些接口定义勾画出了IoC的基本轮廓。
3.很显然,在Spring的代码实现中,BeanFactory只是一个接口类,并没有给出容器的具体实现,而我们在图中看到的各种具体类,比如DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等都可以看成是容器附加了某种功能的具体实现,也就是容器体系中的具体容器产品。
下面我们来看看BeanFactory是怎样定义IoC容器的基本接口的
1.用户使用容器时,可以使用转义符"&"来得到FactoryBean本身,用来区分通过容器来获取FactoryBean产生的对象和获取FactoryBean本身。
2.举例来说,如果myJndiObject是一个FactoryBean,那么使用&myJndiObject得到的是FactroyBean,而不是myJndiObject这个FactoryBean产生出来的对象。
3.关于具体的FactoryBean的设计和实现模式,我们会在后面的章节中介绍。
4.注意,理解上面这段话需要很好地区分FactoryBean和BeanFactory这两个在Spring中使用频率很高的类,它们在拼写上非常相似。
5.一个是Factory,也就是IoC容器或对象工厂;一个是Bean。
6.在Spring中,所有的Bean都是由BeanFactory(也就是IoC容器)来进行管理的。
7.但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能产生或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器类似。