日期:2014-4-10 浏览次数:20189次 点赞次数:20

  在spring容器内拼凑bean叫作拆卸。拆卸bean的时候,你是在通知容器,需求哪些bean,以及容器如何使用依赖注入将它们配合在一同。
    理论上,bean拆卸可以从任何资源获得,包括属性文件,关系数据库等,但xml是最常见的spring 使用系统配置源。Spring中的几种容器都支持使用xml拆卸bean,包括:
    XmlBeanFactory ,
    ClassPathXmlApplicationContext ,
    FileSystemXmlApplicationContext ,
    XmlWebApplicationContext

    基本的xml配置包括如下几个方面:
   
    1.添加一个bean
    2.设置bean的属性
        2.1 手动设置
            2.1.1 通过Setter方法
            2.1.2 通过结构器
        2.2 自动设置
    其中bean的属性即为bean里的成员变量,这些成员变量值的获得可以通过setter方法,例如某个属性为name,则setter方法为setName(String name);或者通过结构器在类被实例化时初始化。Setter方法(例如setName方法)或者结构器的调用都可以通过在xml文件里进行配置,从而实现让spring容器来自动进行。

1.添加一个bean
    以下是一个例子:
    <bean
        id = “mybean”
        Class = “blog.spring.MyBean”
        Singleton = “false”
        init-method = “initMethod”
        destroy-method = “destroyMethod”
        autowire = “autowire type”
    />
    下面是对该标签里各个属性的解释:
    Id : 标识该bean的名称,通过factory.getBean(“id”)来获得实例。
    Class : 该bean的类路径。
    Singleton : 默认为true,即单实例模式,每次getBean(“id”)时获取的都是同
一个实例,如果设置为false,即原型模式,则每次获取的是新创建
的实例。
    Init-method : 在bean实例化后要调用的方法(bean里定义好的方法)。
    Destroy-method : bean从容器里删除之前要调用的方法。
    Autowire : 其属性要通过何种方法进行属性的自动拆卸。
    对于上述的各个属性,id和class是必要的,其他的则可以省略。例如如果设置了autowire的值,则表明需求自动拆卸,否则是手动拆卸。

2.通过Setter方法手动设置bean里的属性
    Bean里的属性通过<property>标签来标识。有以下几种情况:
    ● 简单类型属性
        <bean id = “mybean” class = “blog.spring.MyBean”>
            <property name = “name”>
                <value>springTest</value>
            </property>
        </bean>
    ● 援用其他bean
        <bean id = “mybean” class = “blog.spring.MyBean” />
        <bean id = “mybean1” class = “blog.spring.MyBean1”>
            <property name = “name”>
                <ref bean = “mybean” />
            </property>
        </bean>
也可以将<ref>改为
    <bean class = “..”>
这样叫做内部bean,缺点是无法在其他地方重用这个bean的实例。
    ● 拆卸集合
        共有以下几种集合的拆卸:
    ****拆卸List和数组****
        <property name = ”nameList”>
            <list>
                <value>something</value>
  &n