如果Bean的属性是个集合,则可以使用集合元素<list.../> 、<set.../> 、<map.../>和<props.../>元素分别用来设置类型为List、Set、Map和Properties的集合属性值。
Axe.java :
public interface Axe {
public String chop();
}StoneAxe.java :
public class StoneAxe implements Axe {
@Override
public String chop() {
return "石斧砍柴好慢";
}
@Override
public String toString() {
return "石斧";
}
}SteelAxe.java :
public class SteelAxe implements Axe {
@Override
public String chop() {
return "钢斧砍柴好快";
}
@Override
public String toString() {
return "钢斧";
}
}Chinese.java :
public class Chinese {
private List<String> schools;
private Map scores;
private Map<String,Axe> phaseAxes;
private Properties health;
private Set axes;
private String[] books;
public Chinese() {
}
public void setSchools(List<String> schools) {
this.schools = schools;
}
public void setScores(Map scores) {
this.scores = scores;
}
public void setPhaseAxes(Map<String, Axe> phaseAxes) {
this.phaseAxes = phaseAxes;
}
public void setHealth(Properties health) {
this.health = health;
}
public void setAxes(Set axes) {
this.axes = axes;
}
public void setBooks(String[] books) {
this.books = books;
}
public void test(){
System.out.println(schools);
System.out.println(scores);
System.out.println(phaseAxes);
System.out.println(health);
System.out.println(axes);
System.out.println(Arrays.toString(books));
}
}
bean.xml核心配置:
<bean id="chinese" class="com.bean.Chinese">
<property name="schools">
<list>
<value>小学</value>
<value>中学</value>
<value>大学</value>
</list>
</property>
<property name="scores">
<map>
<entry key="数学" value="87"/>
<entry key="英语" value="89"/>
<entry key="语文" value="82"/>
</map>
</property>
<property name="phaseAxes">
<map>
<entry key="原始社会" value-ref="stoneAxe"/>
<entry key="农业社会" value-ref="steelAxe"/>
</map>
</property>
<property name="health">
<props>
<prop key="血压">正常</prop>
<prop key="身高">175</prop>
</props>
</property>
<property name="axes">
<set>
<!-- 每个value,bean,ref都配置一个set元素 -->
<value>普通的字符串</value>
<bean class="com.bean.SteelAxe"/>
<ref local="stoneAxe"/>
</set>
</property>
<property name="books">
<list>
<value>疯狂Java讲义</value>
<value>JavaWeb与Tomcat开发技术详解</value>
<value>轻量级JavaEE企业应用实战</value>
</list>
</property>
</bean>
<bean id="stoneAxe" class="com.bean.StoneAxe"/>
<bean id="steelAxe" class="com.bean.SteelAxe"/>Test.java :
public class Test {
public static void main(String[] args) {
ApplicationContext ctx=new ClassPathXmlApplicationContext("bean.xml");
Chinese chinese=(Chinese) ctx.getBean("chinese");
chinese.test();
}
}
由于集合元素又可以是基本类型值、引用容器中其他Bean、嵌套Bean或集合属性等,所以<list.../> 、<key.../> 和<set.../>元素又可接受如下子元素:
① value:集合元素是基本类型或字符串类型。
② ref:集合元素是容器中另一个Bean实例。
③ bean:集合元素是一个嵌套Bean。
④ list、set、map及props:集合元素又是集合。
<props.../>元素用于配置Properties类型的属性,Properties类型是一种特殊的类型,其key和value都只能是字符串。
使用<map.../>元素配置Map属性时比较复杂,因为Map集合的每个元素由key、value两个部分组成,所以配置文件中每个<entry.../>配置一个Map元素,其中entry支持如下4个属性:
① key:Map的key是基本类型或字符串。
② key-ref:Map的key是容器中另一个Bean实例。
③ value:Map的value是基本类型或字符串。
④ value-ref:Map的value是容器中另一个Bean实例。
458

被折叠的 条评论
为什么被折叠?



