Spring中的Bean和BeanFactory
Spring中Bean的概念:
Spring中Bean的概念非常广,包括所有的Java类都可以认为是Bean。
BeanFactory:
在Spring中,通过配置文件来管理Bean,然后通过BeanFactory在程序中来取得Bean。ApplicationContext是BeanFactory的子接口,实现功能更加强大。这两者的区别是,使用BeanFactory,则Web服务器开启的时候,并不进行依赖注入。使用ApplicationContext则相反,在Web服务器开启的时候,对所有bean实行依赖注入,并且执行依赖检查,可以更早发现错误。
Bean:
在Spring容器中,bean有两种状态,singleton和non-singleton。
Singleton的bean,则在Spring容器中只有一个副本。而non-singleton的bean,每次请求都会生成新的bean。
Bean之间可以有依赖,通过property来指定依赖的对象。依赖的对象可以是本地xml里面定义的bean(通过<ref local=””/>),也可以是其他xml文件定义的(通过<ref bean=””/>)。
协调不同步的Bean:
当一个singleton的bean依赖non-singleton的bean时候,会出现不同步的情况。原因是singletn的bean在Spring容器里面只有一个,而non-singleton的bean在singleton bean每次被请求的时候,都会创建出一个实例,使得singleton bean出现不同步。
解决方法有两种:1、部分放弃依赖注入。2、利用方法注入。