Spring5入门到实战------4、IOC容器-Bean管理XML方式、集合的注入(二)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 这篇文章是Spring5框架的实战教程,主题是IOC容器中Bean的集合属性注入,通过XML配置方式。文章详细讲解了如何在Spring中注入数组、List、Map和Set类型的集合属性,并提供了相应的XML配置示例和Java类定义。此外,还介绍了如何在集合中注入对象类型值,以及如何使用Spring的util命名空间来实现集合的复用。最后,通过测试代码和结果展示了注入效果。

3、IOC容器-Bean管理XML方式(一):

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

  • 1、注入数组类型属性
  • 2、注入list集合类型属性
  • 3、注入map集合类型属性
  • 4、注入set集合类型属性
类型 方式
数组 <array> <value>C语言</value> </array>
list <list> <value>张三</value> </list>
map <map> <entry key="JAVA" value="java"/></map>
set <set><value>MySQL</value> </set>

2、定义数组、list、map、set 类型属性,生成对应 set 方法

2.1 创建类

package com.zyz.spring5;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author Lenovo
 * @version 1.0
 * @data 2022/9/25 21:28
 */
public class TestStu {
    /**
     * 1、数组类型属性
     */
    private String [] courses;

    /**
     * 2、list集合类型属性
     */
    private List<String> list;

    /**
     * 3、map集合类型属性
     */
    private Map<String,String> maps;

    /**
     * 4、set集合类型属性
     */
    private Set<String> sets;

    public void setCourses(String[] courses) {
        this.courses = courses;
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    public void setMaps(Map<String, String> maps) {
        this.maps = maps;
    }

    public void setSets(Set<String> sets) {
        this.sets = sets;
    }

    @Override
    public String toString() {
        return "TestStu{\n" +
                "courses=" + Arrays.toString(courses) +
                ",\n list=" + list +
                ",\n maps=" + maps +
                ",\n sets=" + sets +
                '}';
    }
}

2.2、编写xml配置文件

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

    <bean id="stu" class="com.zyz.spring5.TestStu">
        <!--1、数组类型属性注入-->
        <property name="courses">
            <array>
                <value>C语言</value>
                <value>Go语言</value>
                <value>Java语言</value>
            </array>
        </property>

        <!--2、list类型属性注入-->
        <property name="list">
            <list>
                <value>张三</value>
                <value>李四</value>
                <value>麻子</value>
            </list>
        </property>

        <!--3、map类型属性注入-->
        <property name="maps">
            <map>
                <entry key="JAVA" value="java"/>
                <entry key="MYSQL" value="mysql"/>
                <entry key="PHP" value="php"/>
            </map>
        </property>

        <!--4、set类型属性注入-->
        <property name="sets">
            <set>
                <value>MySQL</value>
                <value>SQLServer</value>
            </set>
        </property>

    </bean>

</beans>

2.3、测试

package com.zyz.spring5.testdemo;

import com.zyz.spring5.TestStu;
import com.zyz.spring5.dao.Employee;
import com.zyz.spring5.entity.Person;
import com.zyz.spring5.service.CatService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author Lenovo
 * @version 1.0
 * @data 2022/9/22 22:25
 */
public class SpringTest5 {

    @Test
    public void testSpring(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean3.xml");
        TestStu testStu = context.getBean("stu",TestStu.class);
        System.out.println(testStu);

    }

}

2.4、测试结果

在这里插入图片描述

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

主要是ref

3.1 创建一个用户类

package com.zyz.spring5.entity;

import lombok.Data;

/**
 * @author Lenovo
 * @version 1.0
 * @data 2022/9/22 22:23
 */
public class Person {
    private String address;
    private String name;

    public void setAddress(String address){
        this.address = address;
    }

    public void setName(String name){
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "address='" + address + '\'' +
                ", pname='" + name + '\'' +
                '}';
    }
}

3.2 用户对象作为集合中的值

    /**
     *5、集合中设置对象属性值
     */
    private List<Person> personList;

    public void setPersonList(List<Person> personList){
        this.personList = personList;
    }

3.3 xml配置文件

        <!--5、集合中设置对象属性值-->
        <property name="personList">
            <list >
                <ref bean="person1"/>
                <ref bean="person2"/>
            </list>
        </property>


    </bean>

    <bean id="person1" class="com.zyz.spring5.entity.Person">
        <property name="address" value="河南周口"/>
        <property name="name" value="张三"/>
    </bean>

    <bean id="person2" class="com.zyz.spring5.entity.Person">
        <property name="address" value="河南郑州"/>
        <property name="name" value="李四"/>
    </bean>

在这里插入图片描述

4、集合注入部分提取出来

把集合抽取成为一个公共部分、不同的bean使用。可以达到代码复用

4.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: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">

    <util:list id="bookList">
        <value>高等数学</value>
        <value>大学英语</value>
        <value>大学政治</value>
    </util:list>

    <bean id="testStu" class="com.zyz.spring5.TestStu">
        <property name="list" ref="bookList"></property>
    </bean>

</beans>

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

将对象提取、一般的list提取

<?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: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">

    <util:list id="bookList">
        <value>高等数学</value>
        <value>大学英语</value>
        <value>大学政治</value>
    </util:list>

    <util:list id="personList">
        <ref bean="person1"/>
        <ref bean="person2"/>
    </util:list>

    <bean id="person1" class="com.zyz.spring5.entity.Person">
        <property name="address" value="河南周口"/>
        <property name="name" value="张三"/>
    </bean>

    <bean id="person2" class="com.zyz.spring5.entity.Person">
        <property name="address" value="河南郑州"/>
        <property name="name" value="李四"/>
    </bean>

    <bean id="testStu" class="com.zyz.spring5.TestStu">
        <property name="list" ref="bookList"></property>
        <property name="personList" ref="personList"/>
     </bean>

</beans>

4.3 测试结果

在这里插入图片描述

在这里插入图片描述

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
207 1
|
3月前
|
XML Java 测试技术
Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)
Spring 第三节 IOC——基于注解配置和管理Bean 万字详解!
276 26
|
2月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于 xml 的整合
本教程介绍了基于XML的MyBatis整合方式。首先在`application.yml`中配置XML路径,如`classpath:mapper/*.xml`,然后创建`UserMapper.xml`文件定义SQL映射,包括`resultMap`和查询语句。通过设置`namespace`关联Mapper接口,实现如`getUserByName`的方法。Controller层调用Service完成测试,访问`/getUserByName/{name}`即可返回用户信息。为简化Mapper扫描,推荐在Spring Boot启动类用`@MapperScan`注解指定包路径避免逐个添加`@Mapper`
83 0
|
20天前
|
XML Java 数据格式
Spring IoC容器的设计与实现
Spring 是一个功能强大且模块化的 Java 开发框架,其核心架构围绕 IoC 容器、AOP、数据访问与集成、Web 层支持等展开。其中,`BeanFactory` 和 `ApplicationContext` 是 Spring 容器的核心组件,分别定位为基础容器和高级容器,前者提供轻量级的 Bean 管理,后者扩展了事件发布、国际化等功能。
|
5月前
|
XML Java 数据格式
【SpringFramework】Spring IoC-基于XML的实现
本文主要讲解SpringFramework中IoC和DI相关概念,及基于XML的实现方式。
148 69
|
5月前
|
XML Java 数据格式
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
本文介绍了在使用Spring框架时,如何通过创建`applicationContext.xml`配置文件来管理对象。首先,在resources目录下新建XML配置文件,并通过IDEA自动生成部分配置。为完善配置,特别是添加AOP支持,可以通过IDEA的Live Templates功能自定义XML模板。具体步骤包括:连续按两次Shift搜索Live Templates,配置模板内容,输入特定前缀(如spring)并按Tab键即可快速生成完整的Spring配置文件。这样可以大大提高开发效率,减少重复工作。
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
|
5月前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
122 12
|
5月前
|
存储 Java 应用服务中间件
【Spring】IoC和DI,控制反转,Bean对象的获取方式
IoC,DI,控制反转容器,Bean的基本常识,类注解@Controller,获取Bean对象的常用三种方式
129 12
|
5月前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
128 6
|
XML Java 数据格式
Spring IoC容器初始化过程(xml形式)
Spring IoC容器初始化过程(xml形式)
170 0