你的位置:首页 > Java教程

[Java教程]Spring笔记(四)


一、公共属性的注入配置:

四个bean:

 1 package com.dwr.spring.bean; 2  3 public class Bean1 { 4   private Bean2 bean2; 5   private Bean3 bean3; 6   private Bean4 bean4; 7  8   public Bean2 getBean2() { 9     return bean2;10   }11 12   public void setBean2(Bean2 bean2) {13     this.bean2 = bean2;14   }15 16   public Bean3 getBean3() {17     return bean3;18   }19 20   public void setBean3(Bean3 bean3) {21     this.bean3 = bean3;22   }23 24   public Bean4 getBean4() {25     return bean4;26   }27 28   public void setBean4(Bean4 bean4) {29     this.bean4 = bean4;30   }31 }

 1 package com.dwr.spring.bean; 2  3 public class Bean2 { 4   private int id; 5   private String name; 6   private String password; 7  8   public int getId() { 9     return id;10   }11 12   public void setId(int id) {13     this.id = id;14   }15 16   public String getName() {17     return name;18   }19 20   public void setName(String name) {21     this.name = name;22   }23 24   public String getPassword() {25     return password;26   }27 28   public void setPassword(String password) {29     this.password = password;30   }31 }

 1 package com.dwr.spring.bean; 2  3 public class Bean3 { 4   private int id; 5   private String name; 6  7   public int getId() { 8     return id; 9   }10 11   public void setId(int id) {12     this.id = id;13   }14 15   public String getName() {16     return name;17   }18 19   public void setName(String name) {20     this.name = name;21   }22 }

 1 package com.dwr.spring.bean; 2  3 public class Bean4 { 4   private int age; 5  6   public int getAge() { 7     return age; 8   } 9 10   public void setAge(int age) {11     this.age = age;12   }13 }

spring.

 1   <bean id="bean1" class="com.dwr.spring.bean.Bean1"> 2     <property name="bean2" ref="bean2"/> 3     <property name="bean3" ref="bean3"/> 4     <property name="bean4" ref="bean4"/> 5   </bean> 6   <bean id="bean2" class="com.dwr.spring.bean.Bean2"> 7     <property name="id" value="1"/> 8     <property name="name" value="Jack"/> 9     <property name="password" value="123456"/>10   </bean>11   <bean id="bean3" class="com.dwr.spring.bean.Bean3">12     <property name="id" value="1"/>13     <property name="name" value="Jack"/>14   </bean>15   <bean id="bean4" class="com.dwr.spring.bean.Bean4">16     <property name="age" value="20"/>17   </bean>

测试:

 1 @org.junit.Test 2   public void testMethod(){ 3     ApplicationContext context = new ClassPath); 4     Bean1 bean1 = (Bean1) context.getBean("bean1"); 5  6     System.out.println("bean1.getBean2().getId():" + bean1.getBean2().getId()); 7     System.out.println("bean1.getBean2().getName():" + bean1.getBean2().getName()); 8     System.out.println("bean1.getBean2().getPassword():" + bean1.getBean2().getPassword()); 9     System.out.println("bean1.getBean3().getId():" + bean1.getBean3().getId());10     System.out.println("bean1.getBean3().getName():" + bean1.getBean3().getName());11     System.out.println("bean1.getBean4().getAge():" + bean1.getBean4().getAge());12 13   }

测试结果:

1 bean1.getBean2().getId():12 bean1.getBean2().getName():Jack3 bean1.getBean2().getPassword():1234564 bean1.getBean3().getId():15 bean1.getBean3().getName():Jack6 bean1.getBean4().getAge():20

bean2和bean3的部分属性配置信息相同,因此可以将公共部分提出来。

 1   <bean id="beanAbstract" abstract="true"> 2     <property name="id" value="1"/> 3     <property name="name" value="Jack"/> 4   </bean> 5   <bean id="bean1" class="com.dwr.spring.bean.Bean1"> 6     <property name="bean2" ref="bean2"/> 7     <property name="bean3" ref="bean3"/> 8     <property name="bean4" ref="bean4"/> 9   </bean>10   <bean id="bean2" class="com.dwr.spring.bean.Bean2" parent="beanAbstract">11     <property name="password" value="123456"/>12   </bean>13   <bean id="bean3" class="com.dwr.spring.bean.Bean3" parent="beanAbstract"></bean>14   <bean id="bean4" class="com.dwr.spring.bean.Bean4">15     <property name="age" value="20"/>16   </bean>

beanAbstract是抽象出来的,令abstract="true"后,可以不指定class属性。

测试结果与上面相同。

若bean2的name不同,则可以在配置bean2是声明(配置property)。