Spring Bean定義の継承


ビーン2、ビーン3、ビーン4、ビーン5があります.
ビーン2は他の3つのビーンを引用していることが観測され、ビーン3の属性はid,name,dateである.Bean 4属性はid、nameです.Bean 5はdateです
id、nameを抽出して配置することができますか?継承関係を構築するのに相当します.
コード:
package com.lwf.bean;

public class Bean2 {

	private Bean3 bean3;
	private Bean4 bean4;
	private Bean5 bean5;
	
	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;
	}
	public Bean5 getBean5() {
		return bean5;
	}
	public void setBean5(Bean5 bean5) {
		this.bean5 = bean5;
	}
	
}
 
package com.lwf.bean;

import java.util.Date;

public class Bean3 {

	private int id;
	private String name;
	private Date date;
	
	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 Date getDate() {
		return date;
	}
	public void setDate(Date date) {
		this.date = date;
	}
}
 
package com.lwf.bean;

public class Bean4 {

	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;
	}
}
 
package com.lwf.bean;

public class Bean5 {

	private int age;

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
}
 
package com.lwf.bean;

import java.beans.PropertyEditorSupport;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class UtilDatePropertiesEditor extends PropertyEditorSupport {

	private String format="yyyy/MM/dd" ;
	public void setAsText(String text) throws IllegalArgumentException {
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		try {
			Date dateVal = sdf.parse(text);
			this.setValue(dateVal);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
	}
	
	public void setFormat(String format){
		this.format = format;
	}

}
 設定ファイル:
appication Contect.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"
		xmlns:tx="http://www.springframework.org/schema/tx"
		xsi:schemaLocation="
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
	<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
		<property name="customEditors">
			<map>
				<entry key="java.util.Date">
					<bean class="com.lwf.bean.UtilDatePropertiesEditor">
						<property name="format" value="yyyy/MM/dd"/>
					</bean>
				</entry>
			</map>
		</property>
	</bean>

	
	<bean id="bean2" class="com.lwf.bean.Bean2">
		<property name="bean3" ref="bean3"/>
		<property name="bean4">
			<ref bean="bean4"/>
		</property>
		<property name="bean5">
			<bean id="bean5" class="com.lwf.bean.Bean5">
				<property name="age" value="30"></property>
			</bean>
		</property>
	</bean>
	
	
</beans>
 
appication Comptext(u)1.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"
		xmlns:tx="http://www.springframework.org/schema/tx"
		xsi:schemaLocation="
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
	<bean id="parentBean" abstract="true">
		<property name="id" value="1"/>
		<property name="name" value="zhang"/>
	</bean>
	
	<bean id="bean3" class="com.lwf.bean.Bean3" parent="parentBean">
		<property name="date" value="2010/05/19"/>
	</bean>
	
	<bean id="bean4" class="com.lwf.bean.Bean4" parent="parentBean"/>
	
</beans>
 
テストクラス:
package com.lwf.client;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.lwf.bean.Bean2;

public class Client {
	public static void main(String[] args) {
			
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext*.xml");
		Bean2 bean2 = (Bean2)ctx.getBean("bean2");
		System.out.println(bean2.getBean3().getName());
		System.out.println(bean2.getBean3().getId());
		System.out.println(bean2.getBean3().getDate());
		System.out.println(bean2.getBean4().getId());
		System.out.println(bean2.getBean4().getName());
		System.out.println(bean2.getBean5().getAge());
	}
}
 
出力:
2010-05-19 10:14:28,122 INFO [org.springframework.context.support.ClassPathXmlApplicationContext] - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@bfbdb0: display name [org.springframework.context.support.ClassPathXmlApplicationContext@bfbdb0]; startup date [Wed May 19 10:14:28 CST 2010]; root of context hierarchy
2010-05-19 10:14:28,310 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Loading XML bean definitions from file [D:\workdirlocal\spring_start\bin\applicationContext.xml]
2010-05-19 10:14:28,716 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Loading XML bean definitions from file [D:\workdirlocal\spring_start\bin\applicationContext_1.xml]
2010-05-19 10:14:28,794 INFO [org.springframework.context.support.ClassPathXmlApplicationContext] - Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@bfbdb0]: org.springframework.beans.factory.support.DefaultListableBeanFactory@16df84b
2010-05-19 10:14:28,981 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@16df84b: defining beans [customEditorConfigurer,bean2,parentBean,bean3,bean4]; root of factory hierarchy
zhang
1
Wed May 19 00:00:00 CST 2010
1
zhang
30
 
 
注意プロファイルで定義されている相続関係について
 
       ,    :
    * ref  
    * <ref>  
    *   <bean>   
    
----------------------------------------------------------------------------------------------------------
              :
	*          (  <bean>    ,  abstract="true")
	*           ,  parent