我们先定义一个接口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 String name;
- public void setDescription(Description description) {
- this.description = description;
- }
- public void setName(String name) {
- this.name = name;
- }
- public void say() {
- description.say();
- System.out.println("我的名字是:"+name);
- }
- }
我们写一个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">
- <!-- 通过set方法注入普通值属性 -->
- <property name="name" value="Jack"/>
- <!-- 通过set方法注入对象属性 -->
- <property name="description" ref="description"/>
- </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岁了
- 我的名字是:Jack