浏览 2404 次
锁定老帖子 主题:Bean和BeanFactory
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-06-07
BeanFactory-->Spring容器最基本的接口。BeanFactory负责配置、创建及管理bean,以及bean与bean之间的依赖关系。 BeanFactory接口包含如下的基本方法: Boolean containsBean(String name): 判断Spring容器是否包含id为name的bean定义。 Object getBean(String name): 返回容器id为name的bean. Object getBean(String name, Class requiredType): 返回容器中id为name,并且类型为requiredType的bean. Class getType(String name): 返回容器中id为name的bean的类型. Bean的基本定义: 通常必须的两个属性: 1 id 2 class 很显然bean的实例化可以通过BeanFactory的getBean()方法得到. 在Spring1.2中,bean在Spring的容器中有两种基本类型: 1singleton:单态 2not-singleton或prototype:原型 每次请求id为not-singleton类型的bean时,Spring都会新建一个bean实例,然后返回给程序.通常要求将Web应用的控制器bean配置成non-singleton类型。因为,每次HttpServletRequest都需要系统启动一个新Action来处理用户请求。如果不指定bean的基本行为,Spring默认使用singleton类型,non-singleton类型的bean的创建、销毁代价比较大,而singleton类型的bean实例成功后,可以重复使用,因此,建议应尽量避免将bean设置成为non-singleton类型。 创建bean的实例通常有以下方法: 1 调用构造器创建一个bean实例 通过"new"关键字创建bean实例 2 BeanFactory调用某个类的静态工厂方法创建bean 使用静态工厂创建bean实例时,class属性也是必需的,但此时class属性并不是该实例的实现类,而是静态工厂类。由于Spring需要知道由哪个静态工厂方法来创建bean实例,因此使用factory-method属性来确定静态工厂方法名。 3 BeanFactory调用实例工厂方法创建bean 实例工厂方法必须提供工厂实例,因此必须在配置文件中配置工厂实例,而bean元素无需class属性,因为BeanFactory不再直接实例化该bean,仅仅是执行工厂的方法,负责生成bean实例. 实例工厂方法和静态工厂方法用法基本相似,我们来看看它门的区别和相同点: 区别: 1 调用实例工厂方法创建bean时,必须将实例工厂配置成bean实例,而静态工 厂方法则无须配置工厂bean. 2 调用实例工厂方法创建bean时,必须使用factory-bean属性来确定工厂bean, 而静态工厂方法则使用class元素确定静态工厂类. 相同点: 1 都需使用factory-method属性指定产生bean实例的工厂方法 2 工厂方法需要参数,都使用construtor-arg属性确定参数值 3 其他依赖注入属性,都使用property元素确定参数值 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |