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(