Spring中的Bean配置 (8)—— 集合属性

在这里插入图片描述
Spring中的Bean配置 (1)——内容提要
Spring中的Bean配置 (2)—— IOC和DI
Spring中的Bean配置 (3)——在Spring的IOC容器里配置Bean(通过全类名(反射))——基于XML文件的方式
Spring中的Bean配置 (4)——依赖注入方式
Spring中的Bean配置 (5)——字面值
Spring中的Bean配置 (6)——引用其他Bean
Spring中的Bean配置 (7)——注入参数详解:null值和级联属性
Spring中的Bean配置 (8)—— 集合属性
Spring中的Bean配置 (9)—— XML 配置里的 Bean自动装配
Spring中的Bean配置 (10)—— 继承 Bean 配置和依赖 Bean 配置
Spring中的Bean配置 (11)——Bean的作用域
Spring中的Bean配置 (12)——使用外部属性文件
Spring中的Bean配置 (13)—— Spring表达式语言:SpEl
Spring中的Bean配置 (14)——IOC容器中Bean的生命周期
Spring中的Bean配置 (15)——在Spring的IOC容器里配置Bean(通过工厂方法创建Bean)——基于XML文件的方式
Spring中的Bean配置 (16)——在Spring的IOC容器里配置Bean(通过FactoryBean)——基于XML文件的方式

Spring中的Bean配置 (17)——在Spring的IOC容器里配置Bean——基于注解的方式来配置Bean
1: list, set 标签

  • 在 Spring中可以通过一组内置的 xml 标签(例如: list, set 或map) 来配置集合属性.
  • 配置 java.util.List 类型的属性, 需要指定 list 标签, 在标签里包含一些元素. 这些标签可以通过 value指定简单的常量值, 通过 ref 指定对其他 Bean 的引用. 通过bean 指定内置 Bean 定义. 通过 null标签 指定空元素. 甚至可以内嵌其他集合.
  • 数组的定义和 List 一样, 都使用 list
  • 配置 java.util.Set 需要使用 set 标签, 定义元素的方法与 List 一样.

:2: map标签

  • Java.util.Map 通过 map 标签定义, map 标签里可以使用多个 entry 作为子标签. 每个条目包含一个键和一个值.
  • 必须在 key 标签里定义键
  • 因为键和值的类型没有限制, 所以可以自由地为它们指定 value ,ref, bean null 元素.
  • 可以将 Map 的键和值作为 entry 的属性定义: 简单常量使用 key 和 value 来定义; Bean 引用通过 key-ref 和 value-ref 属性定义
  • 使用 prop> 定义 java.util.Properties, 该标签使用多个 prop 作为子标签. 每个 prop 标签必须定义 key 属性.

​ :3:使用 utility scheme 定义集合

  • 使用基本的集合标签定义集合时, 不能将集合作为独立的Bean定义 ,导致其*它Bean 无法引用该集合, 所以无法在不同Bean之间共享集合.

然而可以使用 util schema 里的集合标签定义独立的集合 Bean. 需要注意的是, 必须在 beans 根元素里添加 util schema 定义

​ :4: 使用 p 命名空间

  • 为了简化 XML 文件的配置,越来越多的 XML 文件采用属性而非子元素配置信息。
  • Spring 从 2.5 版本开始引入了一个新的 p 命名空间,可以通过 bean 元素属性的方式配置 Bean 的属性。
  • 使用 p 命名空间后,基于 XML 的配置方式将进一步简化

以下将对上面四个类型标签一一演示,注意配置.xml文件时要引入如下的namespace
在这里插入图片描述

list标签代码示例(set标签不做演示):
Car.java

package com.atguigu.spring.beans;
import com.atguigu.spring.beans.Person;

public class Car {
   
	
	private String carName;
	private int price;
	private java.util.List<Person> person;

	public void setCarName(String carName) {
   
		
		this.carName = carName;
		
	}
	
	public void setPrice(int price) {
   
		
		this.price = price;
		
	}

	public void setPerson(java.util.List<Person> person) {
   
		
		this.person = person;
		
	}

	@Override
	public String toString() {
   
		
		return "Car [carName=" + carName + ", price=" + price + ", person=" + person + "]";
		
	}
	
}



NewCar.java

package com.atguigu.spring.beans;

public class NewCar {
   

	private String carName;
	private int price;
	private java.util.Map<String,Car> person;

	public void setCarName(String carName) {
   
		
		this.carName = carName;
		
	}
	
	public void setPrice(int price) {
   
		
		this.price = price;
		
	}

	public void setPerson(java.util.Map<String, Car> person) {
   
		this.person = person;
	}

	@Override
	public String toString() {
   
		
		return "NewCar [carName=" + carName + ", price=" + price + ", person=" + person + "]";
		
	}
	
	
}

Person.java

package com.atguigu.spring.beans;

public class Person {
   
	
	private String userName;
	private String number;
	private String place;
	
	public void setUserName(String userName) {
   
		
		this.userName = userName;
		
	}

	public void setNumber(String number) {
   
		
		this.number = number;
		
	}


	public void setPlace(String place) {
   
		
		this.place = place;
		
	}

	public Person(String userName, String number, String place) {
   
		
		super();
		this.userName = userName;
		this.number = number;
		this.place = place;
		
	}

	public  Person() {
   
		
	}

	@Override
	public String toString(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值