观察问题
- 在Spring中可以通过配置文件的方式,配置java程序类的实例化对象,并为实例化对象赋值,一个java类可能配置多个实话对象但是有些属性的值是相同的,这就会出现重复配置的情况
- 例如:以下两个配置除了postcode和id属性不一样之外,其余的配置都一样,那该如何解决重复问题?
<bean id="beijing1" class="mao.shu.spring.parent.City"
p:name="北京"
p:street="故宫"
p:postcode="123456">
</bean>
<bean id="beijing2" class="mao.shu.spring.parent.City"
p:name="北京"
p:street="故宫"
p:postcode="88989">
</bean>
继承Bean的配置
<bean id="beijing1" class="mao.shu.spring.parent.City"
p:name="北京"
p:street="故宫"
p:postcode="123456">
</bean>
<bean id="beijing2" class="mao.shu.spring.parent.City" parent="beijing1"
p:postcode="88989">
</bean>
- 示例:将父Bean设置为模版
- 当设置父Bean的abstruct为true时,IOC容器将不会实例化这个对象.如果要取得abstract的Bean会出现异常.
- 父Bean中可以忽略掉class.有继承配置的子类指定class.
<bean id="beijing1" abstract="true">
<property name="name" value="北京"/>
</bean>
<bean id="beijing2" class="mao.shu.spring.parent.City" parent="beijing1"
p:postcode="88989"
p:street="广场">
</bean>
依赖 Bean 配置
<bean id="info" class="mao.shu.spring.parent.Info" p:context="newDay" depends-on="simpleDateFormart">
<property name="releaseDate">
<bean factory-bean="simpleDateFormart" factory-method="parse">
<constructor-arg value="2019-03-11"/>
</bean>
</property>
</bean>
<bean id="simpleDateFormart" class="java.text.SimpleDateFormat" >
<constructor-arg value="yyyy-MM-dd"/>
</bean>
@Test
public void testInfo(){
Info info = (Info) this.app.getBean("info");
System.out.println(info);
}