戴着假发的程序员出品
[查看视频教程]
list集合的注入和set集合的注入基本完全相同。
案例
我们修改上面案例中的类型即可:
准备账户类,拥有属性account,有参和无参构造方法
1 /** 2 * @author 戴着假发的程序员 3 * 4 * @description 账户 5 */ 6 public class Account { 7 private String account; 8 public Account(){ 9 } 10 public Account(String account) { 11 this.account = account; 12 } 13 public void setAccount(String account) { 14 this.account = account; 15 } 16 @Override 17 public String toString(){ 18 return "account:"+account; 19 } 20 }
准备账户组类,这个类拥有两个set集合类型的属性,一个accName存储字符串类型的账户名字,一个存储Account类型的账户对象。 拥有有参和无参构造方法。
1 /** 2 * @author 戴着假发的程序员 3 * 4 * @description 5 */ 6 public class Group { 7 //账户名字集合 8 private List<String> accNames; 9 //账户对象集合 10 private List<Account> accounts; 11 12 public void setAccNames(List<String> accNames) { 13 this.accNames = accNames; 14 } 15 public void setAccounts(List<Account> accounts) { 16 this.accounts = accounts; 17 } 18 //无参数构造 19 public Group(){ 20 } 21 //有参数构造 22 public Group(List<String> accNames, List<Account> accounts) { 23 this.accNames = accNames; 24 this.accounts = accounts; 25 } 26 public void showNames(){ 27 for(String name : accNames){ 28 System.out.print(name+"\t"); 29 } 30 System.out.println(); 31 } 32 public void showAccount(){ 33 for(Account account : accounts){ 34 System.out.print(account); 35 } 36 System.out.println(); 37 } 38 }
我们在配置文件中给group注入属性。使用list标签进行注入:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans default-autowire="byType" xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans.xsd"> 6 <!-- 准备三个accountBean --> 7 <bean id="account1" class="com.dk.demo2.beans.Account"> 8 <constructor-arg name="account" value="卡卡西"/> 9 </bean> 10 <bean id="account2" class="com.dk.demo2.beans.Account"> 11 <constructor-arg name="account" value="佐助"/> 12 </bean> 13 <bean id="account3" class="com.dk.demo2.beans.Account"> 14 <constructor-arg name="account" value="鸣人"/> 15 </bean> 16 <!-- 注册一个group --> 17 <bean id="group1" class="com.dk.demo2.beans.Group"> 18 <property name="accNames"> 19 <!-- 使用list标签注入简单set集合属性 --> 20 <list> 21 <value>路飞</value> 22 <value>索隆</value> 23 <value>山治</value> 24 </list> 25 </property> 26 <property name="accounts"> 27 <!-- list标签注入引用类型属性 --> 28 <list> 29 <ref bean="account1"/> 30 <ref bean="account2"/> 31 <ref bean="account3"/> 32 </list> 33 </property> 34 </bean> 35 36 <bean id="group2" class="com.dk.demo2.beans.Group"> 37 <property name="accNames"> 38 <!-- 使用list标签注入简单set集合属性 --> 39 <list> 40 <value>路飞</value> 41 <value>索隆</value> 42 <value>山治</value> 43 </list> 44 </property> 45 <property name="accounts"> 46 <!-- set标签注入引用类型属性 --> 47 <list> 48 <bean class="com.dk.demo2.beans.Account"> 49 <constructor-arg name="account" value="乔峰"/> 50 </bean> 51 <bean class="com.dk.demo2.beans.Account"> 52 <constructor-arg name="account" value="虚竹"/> 53 </bean> 54 <bean class="com.dk.demo2.beans.Account"> 55 <constructor-arg name="account" value="段誉"/> 56 </bean> 57 </list> 58 </property> 59 </bean> 60 </beans>
测试:
1 @Test 2 public void testList(){ 3 ApplicationContext ac = 4 new ClassPathXmlApplicationContext("applicationContext.xml"); 5 Group bean1 = ac.getBean("group1",Group.class); 6 bean1.showNames(); 7 bean1.showAccount(); 8 System.out.println("------------"); 9 Group bean2 = ac.getBean("group2",Group.class); 10 bean2.showNames(); 11 bean2.showAccount(); 12 }
结果:
其余的测试和set完全一致。