Spring的Bean的生命周期(三)

Bean的生命周期
Singleton:单例模式,在整个Spring IOC容器中,使用singleton定义的Bean将只有一个实例。(默认的)
Prototype:原型模型,每次通过对容器的getBean方法获取prototype定义的bean时,都将产生一个新的bean。
Request:对于每次HTTP请求,使用request定义的bean都产生一个新的实例。
Session:HTTP的session,使用session定义的bean都会产生一个新的实例。
Global session:

Bean的几个属性: Value、ref


自动装配:可以让某些bean自动装配;(autowire属性)
no:不使用自动装配。Bean必须通过ref元素来定义。
byName:根据属性名自动装配,BeanFactory查找容器中的全部Bean,找出其中id属性与属性同名的Bean来完成注入。没有找到匹配的Bean实例,就不会注入。
byType:根据属性类型自动装配,BeanFactory查找全部的Bean,当存在唯一一个依赖属性类型相同就会注入,否则,抛出异常!!
Constructor:与byType类似,区别是用于构造注入的参数。
Autodetect:BeanFactory根据Bean内部结构,决定使用constructor或byType

byName:
<bean id=”chinese” class=”org.atomic.service.impl.Chinese”  autowire=”byName” />
< bean id=”gundog” class=”org.atomic.service.impl.Gundog” >
<property  name=”name”  value=”wangwang”  />
</bean>
并且在org.atomic.service.impl.Chinese类中,有
Public void setGundog(Dog dog){
This.dog = dog;
}

byType:
<bean id=”chinese” class=”org.atomic.service.impl.Chinese”  autowire=”byName” />
< bean id=”gundog” class=”org.atomic.service.impl.Gundog” >
<property  name=”name”  value=”wangwang”  />
</bean>

但是如果出现了
<bean id=”chinese” class=”org.atomic.service.impl.Chinese”  autowire=”byName” />
< bean id=”gundog” class=”org.atomic.service.impl.Gundog” >
<property  name=”name”  value=”wangwang”  /></bean>
< bean id=”petdog” class=”org.atomic.service.impl.Petdog” >
<property  name=”name”  value=”ohoh”  /></bean>
Chinese的Bean无法确定那个Bean会注入,报异常错误。
其实,不使用自动装配好点,那样清晰一些。


关于组合属性的一些问题,例子:

<property  name=”foo.bar.x.y”  value=”xxx” >
这个属性注入其实是
Class.getFoo().getBar().getX().setY( “xxx” ); 所以前面的属性值都不能为空,最后一个可以。

<context:annotation-config />这说明以XML配置为主



关于几种Bean的生命周期:
Singleton作用域,Spring可以精确的知道何时被创建、何时被初始化完成、容器何时准备销毁该Bean实例。
Prototype作用域,Spring容器仅负责创建Bean实例,交给客户端后,容器不跟踪Bean的生命周期。



关于XML文件配置的Spring
最新的Spring支持XML Schema的配置方式。
关于p标签的使用,属性配置;
例: xmlns:p=”http://www.springframework.org/schema/p”
……
<bean id=”xxxx” class=”xxx.xxx.xxx.xxx”
P:age=”29” p:axe-ref=”stoneAxe”
这里设置了 age属性以及axe属性;

Spring中的Schema XML文件有好几种:
例子: util Schema :
Xmlns:util=”http:www.xxxxxxx”
http://www.xxxxxx/schema/util
http://www.xxxxxxx/schema/util/Spring-util-3.0.xsd”>
其他的Schema:
Spring-aop-3.0.xsd用于简化Spring AOP配置的Schema
Spring-jee-3.0.xsd用于简化Spring的JavaEE配置的Schema
Spring-jms-3.0.xsd用于简化JMS的
Spring-lang-3.0.xsd用于简化Spring动态语言配置

Spring-tx-3.0.xsd用于简化Spring事务配置


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值