• Spring----有关bean的配置


    1.单例类的配置
    如果我们想创建一个单例类的bean,只能会通过静态工厂来创建。
    下图为一个单例类:

    Stage并没有提供公开的构造方法,构造方法都是私有的,必须通过getInstance()方法获得已经实例化好的stage,所以我们每次调用返回的都是相同的实例。
    在Spring的配置文件中,我们可以通过<bean> 的factory-method属性,调用一个指定的静态方法来创建实例。

    2.bean的作用域
    Spring中所有的bean默认都是单例。当容器分配一个Bean时,返回的都是同一个实例,单有时候我们需要每次调用都返回一个唯一的bean实例,可以通过配置bean的scope属性实现。
    scope值默认为singleton 即单例。 修改为prototype 每次调用都会创建一个实例。

    3.初始化和销毁Bean
    当实例化一个bean时,可能需要执行一些初始化的操作,同样,当不在需要Bean,将其从容器中移除时,我们可能还需要按照顺序执行清楚工作。为了满足在初始化和销毁Bean时所需要做的特殊操作,Spring提供了Bean生命周期的钩子方法。
    为Bean定义初始化和销毁操作,只需要使用init-method 和destrory-method参数来配置<bean>元素
    例如:
    在Stage类中添加初始化和销毁时所要执行的方法:

    配置xml文件,在bean中设置init-method和destroy-method属性

    4.注入Bean属性
    注入简单值
    将字符串作为参数注入。
    <bean id =“XX” class="xxxxxxxxxxxxxxxxxxxxxx">
    <property name="song" value="yesterday once more">
    <beans>
    将数字作为参数注入
    <bean id =“XX” class="xxxxxxxxxxxxxxxxxxxxxx">
    <property name="age" value="18">
    <beans>
    引用其他的bean
    将A作为参数注入到其他bean中
    <bean id =“A” class="xxxxxxxxxxxxxxxxxxxxxx">
    <property name="age" value="18">
    <beans>
    <bean id =“XX” class="xxxxxxxxxxxxxxxxxxxxxx">
    <property name="instrument" ref="A">
    <beans>
    spring装配集合
    当配置集合类型的bean属性时,spring提供了4种类型的集合配置元素,如下。

    集合元素 用途
    <list> 装配list类型的值,允许重复
    <set> 装配set类型,不允许重复
    <map> 装配map类型的值,名称和值可以是任意类型
    <props> 装配properties类型的值,名称和值必须都是String类型


    装配List:
    <bean id="roles" class="cn.com.ztz.spring.model.Roles">
    <property name="roleName" value="辅导员"/>
    <property name="users">
    <list>
    <ref bean="users1"/>
    <ref bean="users2"/>
    <ref bean="users2"/> //允许重复
    </list>
    </property>
    </bean>
    <bean id="users1" class="cn.com.ztz.spring.model.Users">
    <property name="name" value="张三"/>
    </bean>
    <bean id="users2" class="cn.com.ztz.spring.model.Users">
    <property name="name" value="李四"/>
    </bean>


    装配set
    <bean id="roles" class="cn.com.ztz.spring.model.Roles">
    <property name="roleName" value="辅导员"/>
    <property name="users">
    <set>
    <ref bean="users1"/>
    <ref bean="users2"/>
    <ref bean="users2"/> //不允许重复,user2只会注入一个。
    </set>
    </property>
    </bean>
    <bean id="users1" class="cn.com.ztz.spring.model.Users">
    <property name="name" value="张三"/>
    </bean>
    <bean id="users2" class="cn.com.ztz.spring.model.Users">
    <property name="name" value="李四"/>
    </bean>


    装配Map
    <bean id="roles" class="cn.com.ztz.spring.model.Roles">
    <property name="roleName" value="辅导员"/>
    <property name="users">
    <map>
    <entry key="USERS1" value-ref="users1"/>
    <entry key="USERS2" value-ref="users2"/>
    </map>
    </property>
    </bean>
    <bean id="users1" class="cn.com.ztz.spring.model.Users">
    <property name="name" value="张三"/>
    </bean>
    <bean id="users2" class="cn.com.ztz.spring.model.Users">
    <property name="name" value="李四"/>
    </bean>
    <map>中的<entry>元素由一个键和一个值组成,键和值可以是简单类型,也可以是其他的Bean的引用。这些属性将帮助我们指定<entry>的键和值

     

    装配properties集合(类似map但是key和value必须均为字符串)
    <bean id="roles" class="cn.com.ztz.spring.model.Roles">
    <property name="roleName" value="辅导员"/>
    <property name="users">
    <props>
    <prop key="USERS">张三</prop>
    <prop key="AGE">19</prop>
    </props>
    </property>
    </bean>


    装配null
    有时候由于特殊原因,需要将bean的某个值设置为空
    这是后我们可以如下配置:
    <bean id="roles" class="cn.com.ztz.spring.model.Roles">
    <property name="roleName" value="辅导员"/>
    <property name="users"><null/></property>
    </bean>

  • 相关阅读:
    HTML5 五大特性
    JS DATE对象详解
    MySQL复制错误 The slave I/O thread stopsbecause master and slave have equal MySQL server UUIDs; these UUIDs must bedifferent for replication to work 解析
    MySQL OSC(在线更改表结构)原理
    Mycat基本搭建
    MySQL MVCC原理
    MySQL索引
    MySQL5.7新特性
    mysql报错"ERROR 1206 (HY000): The total number of locks exceeds the lock table size"的解决方法
    监控Mongo慢查询
  • 原文地址:https://www.cnblogs.com/red-evil/p/10058400.html
Copyright © 2020-2023  润新知