我们先定义一个要被注入对象的接口Description.java:
- package com.spring.di;
- public interface Description {
- public void say();
- }
我们再定义一个具体的实现PeopleDescription.java:
- package com.spring.di;
- public class PeopleDescription implements Description{
- public void say() {
- System.out.println("我今年23岁了");
- }
- }
我们再定义一个接口People.java:
- package com.spring.di;
- public interface People {
- public void say();
- }
我们定义一个具体的实现Jack.java:
- package com.spring.di;
- public class Jack implements People{
- private Description description;
- private int age;
- public Jack() {
- System.out.println("默认构造方法被调用了!");
- }
- public Jack(Description description,int age) {
- System.out.println("有参构造方法被调用了!");
- this.description=description;
- this.age = age;
- }
- public void say() {
- description.say();
- System.out.println("你好!我今年"+age+"岁了");
- }
- }
我们写一个Spring的配置文件ditest.xml:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
- <bean id="description" class="com.spring.di.PeopleDescription"/>
- <bean id="jack" class="com.spring.di.Jack">
- <constructor-arg index="0" ref="description"/><!--参数1,设置对象 -->
- <constructor-arg index="1" value="24"/> <!--参数2,直接设置值 -->
- </bean>
- </beans>
最后我们写一个测试类DiTest.java:
- package com.spring.di;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class DiTest {
- public static void main(String[] args) {
- ApplicationContext ctx=new ClassPathXmlApplicationContext("ditest.xml");
- People p1=(People) ctx.getBean("jack");
- p1.say();
- }
- }
输出结果:
- 有参构造方法被调用了!
- 你好!我今年23岁了
- 你好!我今年24岁了
- 有参构造方法被调用了!
- 你好!我今年23岁了
- 有参构造方法被调用了!
- 你好!我今年23岁了
- 你好!我今年24岁了
- 有参构造方法被调用了!
- 你好!我今年23岁了
- 你好!我今年24岁了
- 有参构造方法被调用了!
- 你好!我今年23岁了
- 你好!我今年24岁了
- 有参构造方法被调用了!
- 你好!我今年23岁了
- 你好!我今年24岁了
- 有参构造方法被调用了!
- 你好!我今年23岁了
- 你好!我今年24岁了