IOC容器-Bean管理XML方式(1-8)

发布时间 2023-05-20 17:41:56作者: monkey大佬

IOC操作Bean管理

什么是Bean管理

  0.Bean管理指的是两个操作

  1.Spring创建对象

  2.Spring注入属性

Bean管理操作两种方式

  1.基于xml配置文件方式实现

  2.基于注解方式实现

 

IOC操作Benan管理(基于xml方式)

1.基于xml方式创建对象

   在spring配置文件中使用bean标签,标签里面添加对应的属性,就可以实现对象创建

  在bean标签有很多属性,介绍常用的属性

    id属性:唯一

    class属性:类全路径(包类路径)

  创建对象的时候,默认也是执行无参数构造方法(无构造方法会报错)

2.基于xml方式注入属性

  DI:依赖注入,就是注入属性

第一种注入方式:使用 set方法进行注入

1.创建类,定义属性和对应的set方法

 

2.在spring配置文件配置对象创建,配置属性注入

 测试方法:

 

第二种注入方式:有参数构造方法注入

1.创建类,定义属性,创建属性对应的有参构造方法

 

2.在spring配置文件中配置

测试:

 

测试

 

 

3.p名称空间注入

1.使用p名称空间注入,可以简化基于xml配置方式

  1.添加p名称空间在配置文件中

   2.进行属性注入,在bean标签里面进行操作

    <!-- 简化属性注入写法 -->
    <bean id="book" class="com.atguigu.Book" p:bname="泽泽泽" p:bauthor="是傻波一"/>

 

 

IOC操作Bean管理(xml注入其他类型属性)

1.字面量(固定值)

  1.null值

        <!-- null值 -->
        <property name="bauthor">
            <null/>
        </property>

  2.属性值包含特殊符号

        <!-- 属性值包含特殊符号
            1把<>进行转义 &tl; &gt;
            2把带特殊符号内容写到CDATA
         -->
        <property name="bauthor">
            <value><![CDATA[<<南京>>]]></value>
        </property>

 2.注入属性-外部bean

  1.创建两个类service类和dao类

  2.在service调用dao里面的方法

public class UserService {

    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void add(){
        System.out.println("service add.....");
        userDao.update();
    }

}

  3.在spring配置文件中进行配置

    <!-- service和dao对象创建-->
    <bean id="userService" class="com.atguigu.service.UserService">
        <!-- 注入userdao对象
                name属性值:类里面属性名称
                ref属性:创建userDao对象bean标签id值
         -->
        <property name="userDao" ref="userDao"/>
    </bean>

    <bean id="userDao" class="com.atguigu.dao.UserDaoImpl"/>

 

 

创建员工类 部门类实现内部bean以及级联赋值

3.注入属性-内部bean 和 级联赋值

    <!-- 内部bean -->
    <bean id="emp" class="com.atguigu.spring5.Emp">
        <property name="ename" value="lucy"/>
        <property name="gender" value="女"/>
        <property name="dept">
            <bean id="dept" class="com.atguigu.spring5.Dept">
                <property name="dname" value="安保部"/>
            </bean>
        </property>
    </bean>

4.注入属性-级联赋值

  第一种写法:

    <!-- 内部bean -->
    <bean id="emp" class="com.atguigu.spring5.Emp">
        <!-- 设置两个普通属性-->
        <property name="ename" value="lucy"/>
        <property name="gender" value="女"/>
        <!-- 级联赋值 -->
        <property name="dept" ref="dept"></property>
    </bean>
    <bean id="dept" class="com.atguigu.spring5.Dept">
        <property name="dname" value="财务部"></property>
    </bean>

  第二种写法:

    <!-- 内部bean -->
    <bean id="emp" class="com.atguigu.spring5.Emp">
        <!-- 设置两个普通属性-->
        <property name="ename" value="lucy"/>
        <property name="gender" value="女"/>
        <!-- 级联赋值  第一种写法-->
        <property name="dept" ref="dept"></property>
        <!-- 第二种写法 -->
        <property name="dept.dname" value="技术部"></property>
    </bean>
    <bean id="dept" class="com.atguigu.spring5.Dept">
<!--        <property name="dname" value="财务部"></property>-->
    </bean>

 

 

IOC操作Bean管理(xml注入集合属性)

1.注入数组类型属性

2.注入List集合类型属性

3.注入Map集合属性

  创建类 定义数组 list  set  map 类型属性,生成对应的set方法

  在spring配置文件进行配置

    <!-- 集合类型属性注入 -->
    <bean id="stu" class="com.atguigu.spring5.collectiontype.Stu">
        <!-- 数组类型属性注入 -->
        <property name="courses">
            <array>
                <value>语文</value>
                <value>数据库</value>
                <value>数学</value>
                <value>奥文</value>
                <value>科学</value>
            </array>
        </property>
        <!-- list类型属性注入 -->
        <property name="list">
            <list>
                <value>小泽泽</value>
                <value>泽泽</value>
                <value>明哲</value>
            </list>
        </property>
        <!-- map类型属性注入 -->
        <property name="maps">
            <map>
                <entry key="JAVA" value="java"></entry>
                <entry key="PHP" value="php"></entry>
            </map>
        </property>
        <!-- set类型属性注入 -->
        <property name="sets">
            <set>
                <value>MySql</value>
                <value>Redis</value>
            </set>
        </property>
    </bean>

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

        <!-- 注入list集合,值是对象 -->
        <property name="courseList">
            <list>
                <ref bean="course1"></ref>
                <ref bean="course2"></ref>
            </list>
        </property>
    </bean>
    <!-- 创建多个course对象 -->
    <bean id="course1" class="com.atguigu.spring5.collectiontype.Course">
        <property name="cname" value="Spring5框架"/>
    </bean>

    <bean id="course2" class="com.atguigu.spring5.collectiontype.Course">
        <property name="cname" value="MyBatis5框架"/>
    </bean>

 

5.把集合注入部分提取出来

  1.在spring配置文件引入名称空间 util

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

    <!-- 集合类型属性注入 -->

</beans>

  2.使用util标签完成list集合注入提取