Spring5—Bean管理

158 阅读2分钟

什么是Bean管理?

Bean管理指的是Spring创建对象和注入属性两个操作。而Bean管理有两种实现方式,一种是基于XML配置文件,另一种是基于注解方式实现,本文介绍基于XML配置文件实现。

bean标签介绍

bean标签中可以设置许多属性,下面列举一些常用的属性: id:标签的唯一标识 class:存放类的全路径

Spring创建对象

在配置文件中输入bean标签来创建,需要写明创建对象的id和class路径

<bean id="book" class="wqy.spring5.bean.Book">  //存放全路径

注入属性

Spring注入属性操作大同小异,大体分为注入基本属性和注入对象属性,下面一一介绍这两种情况

注入基本属性:

在bean标签内使用property标签,写明属性名称(name)和属性值(value)即可,在此不过多赘述.

<property name="name" value="阳哥心经"></property>

注入对象属性

1.注入外部bean:一个类中调用另一个类中的方法(以servi和dao关系为例在:service 调用 dao 里面的方法)
在创建对象的bean标签外另起一个bean标签,再在创建对象的bean标签中利用property的属性ref(referer:引用,在此后的学习中注入一些奇奇怪怪的东西大多采用此种方式)引入即可。

<bean id="userService" class="wqy.spring5.service.userService" >
    <property name="userDao" ref="userDaoImpl"></property>
</bean>

    <bean id="userDaoImpl" class="wqy.spring5.dao.userDaoImpl"></bean>

2.注入内部bean:在实体类之间表示一对多关系(以部门和员工的关系为例) 在注入属性时,在property标签内部直接声明一个bean标签进行注入即可

<bean id="emp" class="wqy.spring5.bean.emp">
    <property name="name"  value="YangGer"></property>
    <property name="gender"  value="Man"></property>
    <property name="dept">
        <bean id="dept" class="wqy.spring5.bean.dept">
            <property name="name" value="卡密"></property>
        </bean>
    </property>
</bean>

3.级联赋值及其两种写法
①跟外部注入大体相同(级联赋值在引入外部bean的时候给外部bean进行了属性设置):

<bean id="emp" class="wqy.spring5.bean.emp">
    <property name="name" value="YangGer"></property>
    <property name="gender" value="Man"></property>
    <property name="dept" ref="dept"></property>
</bean>
<bean id="dept" class="wqy.spring5.bean.dept">
    <property name="name" value="卡密"></property>
</bean>

②相比①多了一个prooerty标签,其中name采用xxx.属性的形式赋值

<bean id="emp" class="wqy.spring5.bean.emp">
    <property name="name" value="YangGer"></property>
    <property name="gender" value="Man"></property>
    <property name="dept" ref="dept"></property>
    <property name="dept.name" value="卡密部门"></property>
</bean>
<bean id="dept" class="wqy.spring5.bean.dept">
    <property name="name" value="卡密"></property>  //被修改为卡密部门
</bean>

注入集合属性(String[] list map set)

集合属性的注入方法也大体相同:在property标签中先使用一个类似于标识身份的标签(String[] 使用array or list list使用list map使用map set使用set),再在该标签中赋值:非键值对采用value标签,键值对采用entry标签,在entry标签内部再对key和value进行赋值

在集合里面设置对象类型值

先创建对象,再用ref标签将bean引入property即可

<bean id="course1" class="wqy.spring5.bean.course">
    <property name="name" value="C++"></property>
</bean>

<bean id="course2" class="wqy.spring5.bean.course">
    <property name="name" value="Python"></property>
</bean>

<bean id="stu2" class="wqy.spring5.bean.stu">
    <property name="courses">
        <list>
            <ref bean="course1"></ref>
            <ref bean="course2"></ref>
        </list>
    </property>
</bean>