• Spring5入门到实战------3、IOC容器-Bean管理XML方式(一)


    在XML文件中进行配置、对象的创建呀、属性的赋值呀…全部在XML配置文件中配置。更像是配置开发

    1、什么是 Bean 管理

    Bean 管理指的是两个操作

    • Spring 创建对象
    • Spirng 注入属性

    2、Bean 管理操作有两种方式

    • 1、基于 xml 配置文件方式实现
    • 2、基于注解方式实现

    3、基于XML方式实现

    3.1 创建对象

    在这里插入图片描述
    (1)在 spring 配置文件中,使用 bean 标签,标签里面添加对应属性,就可以实现对象创建
    (2)在 bean 标签有很多属性,介绍常用的属性

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

    (3)创建对象时候,默认也是执行无参数构造方法完成对象创建

    在这里插入图片描述

    3.2 注入属性

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

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

    • 1、创建类,在类中定义属性和对应的set方法
    • 2、在 spring 配置文件配置对象创建,配置属性注入

    友情提示:使用set方式进行属性的注入、需要在类中、手动填写setXXX。如果使用lombok生成的setXXX、似乎不可以
    在这里插入图片描述

    定义Dog类

    package com.zyz.spring5;
    
    /**
     * @author 静小文
     * @version 1.0
     * @data 2022/9/21 23:02
     */
    public class Dog {
        /**
         * 创建属性
         */
        private String name;
        private String kind;
    
        /**
         * 创建对应的set方法
         */
        public void setName(String name){
            this.name = name;
        }
    
        public void setKind(String kind){
            this.kind = kind;
        }
    
        public void testDog(){
            System.out.println("小狗的品种是:"+ this.kind+",小狗的名字是:"+this.name);
        }
    }
    
    
    

    编写配置文件

       <!--    set方法注入属性-->
        <bean id="dog" class="com.zyz.spring5.Dog">
            <!--使用 property 完成属性注入
                name:类里面属性名称
                value:向属性注入的值
             -->
            <property name="kind" value="哈巴狗"/>
            <property name="name" value="旺财"/>
        </bean>
    

    测试结果

    在这里插入图片描述

    3.2.2 第二种注入方式:使用过有参构造函数进行注入

    • 1、创建类,定义属性,创建属性对应有参数构造方法
    • 2、在 spring 配置文件中进行配置

    在这里插入图片描述
    Cat类

    package com.zyz.spring5;
    
    /**
     * @author 静小文
     * @version 1.0
     * @data 2022/9/21 23:19
     */
    public class Cat {
        /**
         * 创建属性
         */
        private String name;
        private String kind;
    
        /**
         * 有参构造函数
         * @param name
         * @param kind
         */
        public Cat(String name,String kind){
            this.kind = kind;
            this.name = name;
        }
    
        public void testCat(){
            System.out.println("小猫的品种是:"+ this.kind+",小猫的名字是:"+this.name);
        }
    }
    
    

    配置文件

        <!--    有参函数构造属性-->
        <bean id="cat" class="com.zyz.spring5.Cat">
            <!--使用 property 完成属性注入
                 name:类里面属性名称
                 value:向属性注入的值
            -->
            <constructor-arg name="kind" value="波斯猫"/>
            <constructor-arg name="name" value="招财猫"/>
        </bean>
    

    测试结果

    在这里插入图片描述


    3.3 注入其他类型属性

    3.3.1 注入null值(字面量)

    在这里插入图片描述
    不写value值、直接写null
    在这里插入图片描述

    测试结果
    在这里插入图片描述

    3.3.2 属性值包含特殊符号

    在这里插入图片描述
    测试结果
    在这里插入图片描述


    如果特殊字符不进行转义、会报错哦
    在这里插入图片描述

    3.3.3 注入属性、外部bean(其他对象作为该类的属性)

    1、创建一个接口CatDao、该接口的实现类:CatDaoImpl
    2、创建一个类CatService、在该类中调用CatDao接口中的方法
    3、在xml配置文件中进行配置

    CatDao

    package com.zyz.spring5.dao;
    
    /**
     * @author Lenovo
     * @version 1.0
     * @data 2022/9/25 15:38
     */
    public interface CatDao {
        public void say();
    }
    
    

    CatDaoImpl

    package com.zyz.spring5.dao;
    
    /**
     * @author Lenovo
     * @version 1.0
     * @data 2022/9/25 15:41
     */
    public class CatDaoImpl implements CatDao{
        @Override
        public void say() {
            System.out.println("CatDaoSay........");
        }
    }
    
    

    CatService

    package com.zyz.spring5.service;
    
    import com.zyz.spring5.dao.CatDao;
    
    /**
     * @author Lenovo
     * @version 1.0
     * @data 2022/9/25 15:42
     */
    public class CatService {
        private CatDao catDao;
    
        public void setCatDao(CatDao catDao){
            this.catDao = catDao;
        }
    
        public void say(){
            System.out.println("CatServiceSay........");
            catDao.say();
        }
    
    
    
    }
    
    

    xml配置文件

       
            
            
        
    
        
    

    在这里插入图片描述

    测试结果
    在这里插入图片描述


    3.3.4 注入属性、内部bean

    比如:一对多关系。一个部门有多个员工。这里的一是部门、多是员工。可以将部门作为一个员工的属性(员工隶属于哪个部门)

    部门类:Department

    package com.zyz.spring5.dao;
    
    /**
     * @author Lenovo
     * @version 1.0
     * @data 2022/9/25 16:34
     */
    public class Department {
        private String dname;
    
        public void setDname(String dname){
            this.dname = dname;
        }
    
        @Override
        public String toString() {
            return "Department{" +
                    "dname='" + dname + '\'' +
                    '}';
        }
    }
    
    

    员工类:Employee

    package com.zyz.spring5.dao;
    
    /**
     * @author Lenovo
     * @version 1.0
     * @data 2022/9/25 16:35
     */
    public class Employee {
        private String ename;
        private String gender;
        /**
         * 所属部门
         */
        private Department department;
    
        public void setEname(String ename){
            this.ename = ename;
        }
    
        public void setGender(String gender){
            this.gender = gender;
        }
    
    
        public void setDepartment(Department department){
            this.department = department;
        }
    
        public void  say(){
            System.out.println("我的部门是:"+department+"  姓名:"+this.ename+"   性别:"+this.gender);
        }
    }
    
    

    编写的配置类

    
    
    
        
            
            
    
            
                
                    
                
            
        
    
    
    
    

    在这里插入图片描述

    测试结果
    在这里插入图片描述

    内部bean可以改为外部bean(外部bean叫容易维护)

    在这里插入图片描述
    测试结果
    在这里插入图片描述


  • 相关阅读:
    TCP关闭的两种方法概述
    元数据介绍
    【性能测试】使用JMeter对code论坛进行压力测试
    C_练习题 10
    ubuntu环境下通过apt-get安装软件 nginx 怎么配置文件
    hive with tez:无法从链中的任何提供者加载aws凭据
    如何在自动化测试中使用MitmProxy获取数据返回?
    java毕业设计律师资格考试Mybatis+系统+数据库+调试部署
    安防监控系统/视频云存储EasyCVR平台视频无法播放是什么原因?
    计算机毕业设计选题推荐-幼儿园管理微信小程序/安卓APP-项目实战
  • 原文地址:https://blog.csdn.net/weixin_43304253/article/details/126982406