Spring Bean定義の継承
ビーン2、ビーン3、ビーン4、ビーン5があります.
ビーン2は他の3つのビーンを引用していることが観測され、ビーン3の属性はid,name,dateである.Bean 4属性はid、nameです.Bean 5はdateです
id、nameを抽出して配置することができますか?継承関係を構築するのに相当します.
コード:
appication Contect.xml
appication Comptext(u)1.xml
テストクラス:
出力:
注意プロファイルで定義されている相続関係について
ビーン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