Bean和BeanFactory

Bean是Spring管理的基本单位,在Spring的J2EE应用中,所有的组件都是bean,bean包括数据源、Hibernate的SessionFactory及事务管理器等。Spring里的bean是非常广义的概念,任何的Java对象,Java组件都可别当成bean处理。

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元素确定参数值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值