您的位置:首页 > 编程语言 > Java开发

Spring管理Bean的生命周期,Spring创建的Bean是单实例还是多实例?

2014-08-27 10:32 363 查看
Spring框架对于Bean类的实例化、值的注入、依赖关系的注入等,都是由Spring的管理容器和配置文件自动完成的。

Spring Bean也称为组件,任何一个JavaBean类都可以作为Spring Bean,但Spring Bean并不要求一定要严格遵循Java Bean规范。Spring中的Bean可以是任意的Java对象,如数据库连接池。

Spring Bean通过Spring容器对其进行实例化、值的注入,以及依赖关系注入等方面管理,还需要对Bean进行定义,即将它定义为一个Spring Bean。

配置Bean参数

在XML文件中,使用bean标签来定义Spring Bean。如:

<bean id="Company" class="springbean.Company" scope="singleton" init-method="postConstuct" destroy-method="preDestroy">

...

</bean>

参数说明:

1、Scope——值为singleton或prototype,用来指定这个Bean是否使用单实例。

2、init-method——值为方法名,代表Bean的一个方法

此方法的执行时机是在实例化该Bean之后,将对象返回到应用层之前。这个方法常用来做资源的初始化工作。

3、destroy-method——值为方法名,代表Bean的一个方法

此方法在Bean即将被销毁之前执行,主要用来进行资源的释放。

配置Bean属性

基本类型属性的配置,如int、String类型。这些类型的属性值可以通过value元素来指定。

<property name="name" value="明星公司"/>

<property name="age" value="20"/>

value元素的值应为基本类型,如int、float、String等,Spring 会对类型作出判断,并进行正确的转换。

引用属性的配置,例如对其他Bean的引用。这种类型的属性应通过ref元素来指定。ref元素指定了属性对其他Bean的依赖关系。根据这个依赖关系,容器在运行时会对ref属性所指定的Bean进行创建。

<property name="address" ref="Address"/>

<!--Address Bean-->

<bean id="Address" class ="springbean.Address">

<property name="city" value="北京"/>

<property name="street" value="西城区南礼路">

</bean>

集合类型属性的配置,通过集合元素来指定。

Spring支持集合类型的Bean属性。这里的集合类型可以是List、数组、Set、Map等类型。

<property name="employees">

<list>

<value>张三</value>

<value>张四</value>

<value>张五</value>

<value>张五</value>

</list>

</property>

使用依赖注入——两种方法   设值注入、构造器注入

设值注入,通过Bean的set方法来完成,因此,如果在XML中定义了Bean的属性值,并且使用设值注入方式,那么必须在Bean类中提供属性的set方法。

Spring设值注入的过程就好比我们使用传统方式创建一个对象时,先通过new关键字调用无参构造器来产生对象,再通过调用对象的set方法来设值属性值。

构造器注入,Spring构造器注入的过程就好比我们使用传统方式创建一个对象时,通过new关键字直接调用带参数构造器来产生对象,将对象属性值通过参数来设置。

需要在XML文件中使用constructor-arg元素来指定属性值。

<bean id="Company" class="springbean.Company">

<constructor-arg type="java.lang.String" index="0">

<value>明星公司<value>

</constructor-arg>

<constructor-arg>

<value>20</value>

</constructor-arg>

</bean>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: