第一步:建三个类Address.java、Car.java 、Person
第二步配置文件:
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--
抽象bean:bean的abstract属性为true,这样的bean不能被IOC容器实例化,只用来被继承配置
若某一个bean的class属性没有指定,该bean必须是一个抽象bean
-->
<bean id="address" class="com.atguigu.spring.beans.autowire.Address"
p:city="Beijing" p:street="WuDaoKou" abstract="true"></bean>
<!--
<bean id="address2" class="com.atguigu.spring.beans.autowire.Address"
p:city="Beijing" p:street="DaZhongSi"></bean>
-->
<!--bean配置的继承:使用bean的parent属性指定继承哪个bean的配置 -->
<bean id="address2" parent="address"></bean>
<bean id="address3" p:street="DaZhongSi" parent="address2"></bean>
<!--
要求配置Person時,必須有一个关联的car,换句话说这个bean依赖于car这个bean
Spring允许用户通过depends-on属性设定Bean前置依赖bean,前置依赖bean会在本bean实例化前创建好
-->
<bean id="car" class="com.atguigu.spring.beans.autowire.Car"
p:brand="Audi" p:price="300"></bean>
<bean id="person" class="com.atguigu.spring.beans.autowire.Person"
p:name="Tom" p:address-ref="address3" depends-on="car">
</bean>
</beans>
第三步:运行main方法
package com.atguigu.spring.beans.relation;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.atguigu.spring.beans.autowire.Address;
import com.atguigu.spring.beans.autowire.Person;
/**
*
* 配置bean的继承和依赖
*
*/
public class Main {
public static void main(String[] args) {
ApplicationContext ctx=new ClassPathXmlApplicationContext("beans-relation.xml");
Address address=(Address) ctx.getBean("address2");
System.out.println(address);
address=(Address) ctx.getBean("address3");
System.out.println(address);
Person person=(Person) ctx.getBean("person");
System.out.println(person);//Person [name=Tom, address=Address [city=Beijing, street=DaZhongSifangxinde], car=null]
}
}
第四步:运行结果
Car's Constructor.....
Address [city=Beijing, street=WuDaoKou]
Address [city=Beijing, street=DaZhongSi]
Person [name=Tom, address=Address [city=Beijing, street=DaZhongSi], car=null]