在 Spring中可以通过一组内置的 xml 标签(例如: , 或
1,数组、List、Set等集合注入
配置 java.util.List 类型的属性, 需要指定
标签, 在标签里包含一些元素. 这些标签可以通过 指定简单的常量值, 通过 指定对其他 Bean 的引用. 通过 指定内置 Bean 定义. 通过 指定空元素. 甚至可以内嵌其他集合。
- 数组的定义和 List 一样, 都使用
。
- 配置 java.util.Set 需要使用 标签, 定义元素的方法与 List 一样。
- java.util.Map 通过 标签定义,
- 元素用于配置Properties类型的参数值,Properties类型是一种特殊的类型,其key和value都只能是字符串,故配置Porperties类型的参数值只需要每个key-value对分别给出key和value就足够了。
value-list-1value-list-2value-list-3
value-prop-1value-prop-2value-prop-3value-set-1value-set-2value-set-3value-array-1value-array-2value-array-3
package Bean;import java.util.*;public class ComplexAssembly {private Long id;private List list;private Map map;private Properties props;private Set set;private String[] array;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public List getList() {return list;}public void setList(List list) {this.list = list;}public Map getMap() {return map;}public void setMap(Map map) {this.map = map;}public Properties getProps() {return props;}public void setProps(Properties props) {this.props = props;}public Set getSet() {return set;}public void setSet(Set set) {this.set = set;}public String[] getArray() {return array;}public void setArray(String[] array) {this.array = array;}}
2,注入组合属性值
例如:使用配置文件为foo.bar.name的属性设置参数值,其中foo.bar.name为组合属性;其中bar是一个独立的类,并且作为foo的一个属性存在;同时bar对象必须先完成初始化;
package Bean;
public class Person {private car car = new car();public car getCar() {return car;}public void setCar(car car) {this.car = car;}
}
package Bean;public class car {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}
}
为Bean的组合属性设置参数时,除最后一个属性之外,其他属性都不允许为null,因为组合属性只有最后一个属性才调用setter方法,前面各属性实际上对应于调用getter方法。
对于注入组合属性值的形式,每个元素依然是让Spring执行一次setter方法,但它不再直接调用该Bean的setter方法,而是需要先调用getter方法,然后再去调用setter方法,也就是说组合属性只有最后一个属性才调用setter方法。