Spring通过构造函数注入值和对象

来源:互联网 发布:java.long.ill 编辑:程序博客网 时间:2024/06/03 20:12

我们先定义一个要被注入对象的接口Description.java:

view plain
  1. package com.spring.di;  
  2.   
  3. public interface Description {  
  4.     public void say();  
  5. }  


 

我们再定义一个具体的实现PeopleDescription.java:

view plain
  1. package com.spring.di;  
  2.   
  3. public class PeopleDescription implements Description{  
  4.   
  5.     public void say() {  
  6.         System.out.println("我今年23岁了");  
  7.     }  
  8.       
  9. }  


 

我们再定义一个接口People.java:

view plain
  1. package com.spring.di;  
  2.   
  3. public interface People {  
  4.     public void say();  
  5. }  


 

我们定义一个具体的实现Jack.java:

view plain
  1. package com.spring.di;  
  2.   
  3. public class Jack implements People{  
  4.     private Description description;  
  5.     private int age;
  6.   
  7.     public Jack() {  
  8.         System.out.println("默认构造方法被调用了!");  
  9.     }  
  10.       
  11.     public Jack(Description description,int age) {  
  12.         System.out.println("有参构造方法被调用了!");  
  13.         this.description=description; 
  14.         this.age = age; 
  15.     }  
  16.   
  17.     public void say() {  
  18.         description.say();  
  19.         System.out.println("你好!我今年"+age+"岁了");
  20.     }  
  21.   
  22. }  

 

我们写一个Spring的配置文件ditest.xml:

view plain
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <beans xmlns="http://www.springframework.org/schema/beans"  
  4.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.          xmlns:aop="http://www.springframework.org/schema/aop"  
  6.          xsi:schemaLocation="http://www.springframework.org/schema/beans  
  7.           http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
  8.           http://www.springframework.org/schema/aop   
  9.           http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">  
  10.         
  11.      <bean id="description" class="com.spring.di.PeopleDescription"/>  
  12.        
  13.      <bean id="jack" class="com.spring.di.Jack">  
  14.         <constructor-arg index="0" ref="description"/><!--参数1,设置对象 -->
  15.         <constructor-arg index="1" value="24"/>   <!--参数2,直接设置值 -->
  16.      </bean>  
  17.        
  18. </beans>  


 

最后我们写一个测试类DiTest.java:

view plain
  1. package com.spring.di;  
  2.   
  3. import org.springframework.context.ApplicationContext;  
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  5.   
  6. public class DiTest {  
  7.       
  8.     public static void main(String[] args) {  
  9.         ApplicationContext ctx=new ClassPathXmlApplicationContext("ditest.xml");  
  10.         People p1=(People) ctx.getBean("jack");  
  11.         p1.say();  
  12.     }  
  13. }  


输出结果:

view plain
  1. 有参构造方法被调用了!  
  2. 你好!我今年23岁了  
  3. 你好!我今年24岁了
view plain
  1. 有参构造方法被调用了!  
  2. 你好!我今年23岁了  
view plain
  1. 有参构造方法被调用了!  
  2. 你好!我今年23岁了  
  3. 你好!我今年24岁了
view plain
  1. 有参构造方法被调用了!  
  2. 你好!我今年23岁了  
  3. 你好!我今年24岁了
view plain
  1. 有参构造方法被调用了!  
  2. 你好!我今年23岁了  
  3. 你好!我今年24岁了
view plain
  1. 有参构造方法被调用了!  
  2. 你好!我今年23岁了  
  3. 你好!我今年24岁了
view plain
  1. 有参构造方法被调用了!  
  2. 你好!我今年23岁了  
  3. 你好!我今年24岁了
原创粉丝点击