基于xml配置文件方式实现Bean管理操作

创建对象

1、首先在xml配置文件中使用bean标签,在标签中添加对应属性,就可以实现对象的创建
bean标签中的相关属性:

  • id:唯一标识
  • class:类的全路径(包类路径)

2、创建对象的时候,spring默认也是执行无参构造方法完成对象的创建**

注入基本类型属性

**DI:是IOC中的一种具体实现。表示依赖注入,就是注入属性
DI支持两种注入方式:就是常用的set方法注入以及带参构造注入**

set属性注入:
在bean标签的开始标签与结束标签之间使用property标签进行属性注入
示例:

<bean id="book" class="com.zhiqian.spring.Book">
    <!--
        使用property标签进行属性注入 
        其中name属性表示类中属性名
        value表示该属性的值,也就是你要注入的值
    -->
    <property name="name" value="小鹿斑比"></property>
    <property name="author" value="志千"></property>
</bean>

带参属性注入:

<!--使用带参构造创建对象并注入属性-->
    <bean id="order" class="com.zhiqian.spring.Book">
        <constructor-arg name="author" value="小鹿斑比"></constructor-arg>
        <constructor-arg name="author" value="志千"></constructor-arg>
    </bean>

注意:带参属性注入,是先通过带参构造创建对象,然后进行注入属性。

p名称空间注入(可以简化基于xml配置方式中的set注入属性的操作):

<!--1、在XML配置文件中的头部添加p名称空间-->
xmlns:p="http://www.springframework.org/schema/p"
<!--2、进行属性的注入,在bean标签上进行操作-->
<!--使用p名称空间注入属性-->
<bean id="person" class="com.zhiqian.spring.Book" p:name="小鹿斑比" p:author="志千"></bean>

xml注入其他类型属性(null,对象,集合等)

注入null值:

<property name="属性名">
    <null/>
</property>

属性值包含特殊符号:

  1. 使用转义符
  2. 使用CDATA

注入对象属性
1、注入对象属性-外部bean

示例:其中bean标签中的ref属性就是在注入外部bean时使用
<bean id="userDao" class="com.zhiqian.dao.UserDaoImpl"></bean>
<bean id="userService" class="com.zhiqian.service.UserService">
    <!--注入userDao对象-->
    <property name="userDao" ref="userDao"></property>
</bean>

2、注入对象属性-内部bean

<bean id="emp" class="com.zhiqian.bean.Emp">
    <property name="ename" value="志千"></property>
       <property name="gender" value="男"></property>
    <property name="dept">
        <bean id="dept" class="com.zhiqian.bean.Dept">
            <property name="dname" value="开发部"></property>
        </bean>
    </property>
</bean>

内部bean也算是一种级联赋值

3、注入对象属性-级联赋值

<bean id="emp" class="com.zhiqian.bean.Emp">
    <property name="ename" value="志千"></property>
    <property name="gender" value="男"></property>
    <!--级联赋值--> 
    <property name="dept" ref="dept"></property>
        <property name="dept.dname" value="技术部"></property>
</bean>
<bean id="dept" class="com.zhiqian.bean.Dept"></bean>

级联赋值,可以使用外部bean的属性

注入集合属性:
1、注入数组类型属性:

<property name="courses">
    <array>
        <value>JavaSE</value>
        <value>JavaEE</value>
        <value>Python</value>
    </array>
</property>

2、注入List集合类型属性:

<property name="courses">
    <list>
        <value>JavaSE</value>
        <value>JavaEE</value>
        <value>Python</value>
    </list>
</property>

3、注入Map集合类型属性

<property name="map">
    <map>
        <entry key="1" value="张三"></entry>
        <entry key="2" value="李四"></entry>
        <entry key="3" value="王五"></entry>
    </map>
</property>

4、当注入一个集合类型的属性,集合类型为一个对象时
先创建出相关的对象

<bean id="course1" class="com.zhiqian.spring.Course">
    <property name="name" value="java"></property>
</bean>
<bean id="course2" class="com.zhiqian.spring.Course">
    <property name="name" value="c++"></property>
</bean>
<bean id="course3" class="com.zhiqian.spring.Course">
    <property name="name" value="python"></property>
</bean>

然后注入:

<property name="courseList">
    <list>
           <ref bean="course1"></ref>
           <ref bean="course2"></ref>
           <ref bean="course3"></ref>
    </list>
</property>

注入提取

我们可以把集合注入部分提取出来,做一个公共的部分,配置文件中的其他地方直接引用即可

1、在配置文件中的头部引入名称空间util

xmlns:util="http://www.springframework.org/schema/util"
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/springutil.xsd">

2、使用util标签完成list集合注入提取(以list为例)

<util:list id="bookList">
    <value>人月神话</value>
    <value>红楼梦</value>
    <value>西游记</value>
</util:list>

3、注入提取的使用,使用ref引入即可

<bean id="book" class="com.zhiqian.spring.collectiontype.Book">
    <property name="list" ref="bookList"></property>
</bean>

自动装配

什么是自动装配:根据指定的装配规则(属性名称或者属性类型),spring自动将匹配的属性值进行注入
不过在基于配置文件进行bean操作中,基本不会使用,了解即可

xml如何实现自动装配:使用bean标签中的属性autowire,配置自动装配
autowire的常用属性值:

  • byName:根据属性名称进行注入 注意:注入值bean的id值和类属性的名称要一致
  • byType:根据属性类型进行注入
最后修改:2021 年 06 月 06 日 02 : 30 PM
如果觉得我的文章对你有用,请随意赞赏