Spring 的IoC使用示例3

下面来展示一个在Spring中把相同的部分提取出来配置好,可以被多个类继承而注入到它们的引用里。

1.程序的总体结构图:


2_1. bean1.java的代码如下:

package com.my_spring;

public class Bean1 {
	
	private Bean2 bean2;
	private Bean3 bean3;
	private Bean4 bean4;
	
	public Bean2 getBean2() {
		return bean2;
	}
	public void setBean2(Bean2 bean2) {
		this.bean2 = bean2;
	}
	public Bean3 getBean3() {
		return bean3;
	}
	public void setBean3(Bean3 bean3) {
		this.bean3 = bean3;
	}
	public Bean4 getBean4() {
		return bean4;
	}
	public void setBean4(Bean4 bean4) {
		this.bean4 = bean4;
	}
}

2_2. bean2.java的代码如下:

package com.my_spring;

public class Bean2 {
	private int id;
	private String name;
	private String password;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

2_3. bean3.java的代码如下:

package com.my_spring;

public class Bean3 {
	private int id;
	private String name;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

2_4. bean4.java的代码如下:

package com.my_spring;

public class Bean4 {
	private int age;
	
	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
}

3.测试类InjectionTest.java的代码如下:

package com.my_spring;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import junit.framework.TestCase;

public class InjectionTest extends TestCase {

	BeanFactory factory;
	
	@Override
	protected void setUp() throws Exception {
		factory = new ClassPathXmlApplicationContext("applicationContext.xml");
	}
		
	public void testInjection() {
		Bean1 bean1 = (Bean1)factory.getBean("bean1");
		
		System.out.println("bean1.bean2.id=" + bean1.getBean2().getId());
		System.out.println("bean1.bean2.name=" + bean1.getBean2().getName());
		System.out.println("bean1.bean2.password=" + bean1.getBean2().getPassword());
		System.out.println("bean1.bean3.id=" + bean1.getBean3().getId());
		System.out.println("bean1.bean3.id=" + bean1.getBean3().getName());
		System.out.println("bean1.bean4.age=" + bean1.getBean4().getAge());
	}
}

4.Spring的配置文件applicationContext.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:p="http://www.springframework.org/schema/p"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:aop="http://www.springframework.org/schema/aop"   
    xmlns:tx="http://www.springframework.org/schema/tx"  
    xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans   
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
    http://www.springframework.org/schema/context   
    http://www.springframework.org/schema/context/spring-context-3.2.xsd  
    http://www.springframework.org/schema/aop  
    http://www.springframework.org/schema/aop/spring-aop-3.2.xsd  
    http://www.springframework.org/schema/tx  
    http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
	
	<bean id="bean1" class="com.my_spring.Bean1">
		<property name="bean2" ref="bean2" />
		<property name="bean3">
			<ref bean="bean3"/>
		</property>
		<property name="bean4" ref="bean4" />
	</bean>
	
	<bean id="bean2" class="com.my_spring.Bean2">
		<property name="id" value="1111" />
		<property name="name">
			<value>木星人</value>
		</property>
		<property name="password" value="123" />
	</bean>
	<bean id="bean3" class="com.my_spring.Bean3">
		<property name="id" value="1111" />
		<property name="name">
			<value>木星人</value>
		</property>
	</bean>
	
	<!-- bean2和bean3可以通过提取共有属性使用下面注释部分的形式来表示 -->
	<!-- <bean id="beanAbstract" abstract="true">
		<property name="id" value="1111" />
		<property name="name">
			<value>木星人</value>
		</property>
	</bean>
	<bean id="bean2" class="com.my_spring.Bean2" parent="beanAbstract">
		<property name="password" value="123" />
	</bean>
	<bean id="bean3" class="com.my_spring.Bean3" parent="beanAbstract" /> -->

	<bean id="bean4" class="com.my_spring.Bean4">
		<property name="age" value="22" />
	</bean>
</beans>

5.程序运行结果截图:



下面提供个Spring framework下载地址
点击打开Spring下载链接

猜你喜欢

转载自blog.csdn.net/lms1719/article/details/25250323
今日推荐