一、bean的配置

在Spring中有三种方式来配置Bean之间的关系:XML配置文件、注解方式、Java类配置。下面讲解xml方式的配置。

1.bean的基本配置

举例

说明

<bean id=“testTargetInterfaceBean”            ass=”com.testTargetInterfaceBeanImple”><property name=”number1” value=”12”/>  

<property name=”number2”>
      <value>12</value>
</property>
</bean>

基本类型(iTest支持的Spring版本被测bean的property可选)

     

<list>        <value>name</value>  

        <value>25</value>
        <ref local=”personBean” />
      </list>
      <set>
        <value>1/value>
        <value>2/value>
      </set>
      <map>
        <entry key=”StrType”>
          <value>1243lue>
        </entry>
        <entry key=”intType”>
          <value>13</value>
        </entry>
        <entry key=”beanType”>
          <ref local=”StrType” />
        </entry>
      </map>

集合类型和数组<list><map><set>中的元素可以是:


①  value:基本类型

②  ref:指向一个bean

③  bean:bean定义

④  list,set,map,props:集合里有集合类型

注意:<value>配置的值Spring认为是String类型的,如果你想作为一个int型使用,必须List<int>或者Integer.parseInt(string)

 

<property name=”propsType”>      <props>  

        <prop key=”String1″>
          string1
        </prop>
        <prop key=”String2″>
          string2
        </prop>
      </props>
    </property>

java.util.Properties

<bean id=”oneBean” class=”com.OneBean”><property name=”date1” ref=”dateBean”/>  

<property name=”date2”>
<ref bean=”dateBean”/>
</property>
<property name=”date3”>
<bean class=”dateBean”/>
</property>
</bean>
<bean id=”dateBean” class=”com.DateBean”>

引用Beans配置文件中的某个Bean

<bean id=”oneBean” class=”com.OneBean”><constructor-arg type=”int” value=”12″ />  

</bean>

构造函数

<bean id=”oneBean” class=”com.OneBean” singleton=”true”>   <lookup-method name=”createAxe” bean=” date”>  

<property name=”date” ref=”dateBean”/>
</bean>
<bean id=”dateBean” class=”com.DateBean” singleton=”false”>

使得所引用的非单态bean总是Spring容器中最新的一个。createAxe:是oneBean中的一个抽象方法,将由Spring自动实现;” date”:是与createAxe的返回类型一样的bean在配置文件中的id号

    2.<bean>标签的常用属性

属性

举例

说明

autowire

<bean id=”oneBean” class=”com.OneBean” autowire =“byType”>


自动装配:就是让Spring自动的去匹配一个Bean的所有属性,而不需要我们在配置文件里写任何属性的配置。自动装配分为五种类型:①no:不采用自动装配功能;②byName:根据Bean属性的名称匹配,如果找不到合适的bean就什么也不做;③byType:根据Bean属性的class类型匹配,如果找不到则什么也不做,如果找到多个则抛异常;④constructor:根据构造函数的参数类型自动装配构造函数,如果找不能根据配置文件中现有的bean构造其任何一个构造函数则抛出异常,如果找到多个合适的bean则选一个;⑤autodetect:spring根据情况自动选用byType或constructor;备注:①Spring默认采用no;②不推荐使用自动装配,因为可读性不好,很容易乱;③上面的②和③是只自动装配bean的属性,而④则是仅仅装配bean的构造函数,不自动装配属性;⑤Spring2.0目前不支持基本类型及数组等无法在配置文件中单独配置成一个bean的类型的自动装配。

dependency-check

<bean id=”oneBean” class=”com.OneBean” dependency-check =“object”>

依赖检查:检查Bean之间的依赖关系。它分为四种类型:①none:不作任何的检查;②simple:只检查基本类型(如int,String等)和集合(如HashMap,Arraylist等);③object:仅对合作者Bean进行依赖检查;④all:作所有检查。备注:①Spring默认采用none;②建议不是用依赖检查,因为依赖检查要求bean的所有属性都正确配置,否则就抛出异常,这通常不是我们想要的,因为我们通常会让bean中的基本类型保持Java的默认,而不是一定要在配置文件中初始化。

init-method


在Bean的全部依赖关系(构造函数,所有属性等)设置结束后自动被Spring调用

destory-method


在Bean被销毁之前(即将被销毁)自动被Spring调用

lazy-init


默认情况下Spring在启动时自动初始化所有的singleton的bean,如果把bean的lazy-init设置成true,则启动时不初始化该bean;也可以在<beans>中设置把所有的bean延迟到访问它们时才初始化,像这样,<beans default-lazy-init=”true”>







3.Bean的分类及其生命周期

类型

适用情况

备注

Singleton(单态)

无限制

在整个Spring容器中共享一份

Prototype(原型)

无限制

每次请求一个原型的Bean,Spring都会创建一个新的对象返回

Request(请求范围)

只能使用在WEB环境中 

Request范围的bean对于每一个请求都会建立一个bean实例 

Session(会话范围)

只能使用在WEB环境中 

类似Request,它是每一个session共享一个实例

Globle session(全局会话)

只能使用在使用portlet的web程序中