版权声明:本文内容来源于网络,如有侵权请联系删除 https://blog.csdn.net/ZyhMemory/article/details/88560775
关系
继承
抽象 bean:bean 的 abstract 属性为 true 的 bean,这样的 bean 不能被 IOC 容器实例化,只用来被继承配置,若某一个 bean 的 class 属性没有指定,则该 bean 必须是一个抽象 bean
<bean id="address" p:city="BeiJing^" p:street="WuDaoKou" abstract="true"></bean>
<!-- bean 配置的继承: 使用 bean 的 parent 属性指定继承哪个 bean 的配置 -->
<bean id="address2" class="com.test.sping.beans.autowire.Address"
parent="address"></bean>
<bean id="address3" class="com.test.sping.beans.autowire.Address"
p:street="DaZhongSi" parent="address2"></bean>
注意一个问题,我用的idea,创建继承会报错,不用管它,直接运行就好了,没问题
依赖
要求在配置 Person 时,必须有一个关联的 car! 换句话说 person 这个 bean 依赖于 Car 这个 bean
<bean id="car" class="com.test.sping.beans.autowire.Car"
p:brand="Audi" p:price="300000"></bean>
<bean id="person" class="com.test.sping.beans.autowire.Person"
p:name="Tom" p:address-ref="address2" depends-on="car"></bean>
源码
Main.class(com.test.sping.beans.relation.Main)
package com.test.sping.beans.relation;
import com.test.sping.beans.autowire.Address;
import com.test.sping.beans.autowire.Person;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-relation.xml");
Address address = (Address) ctx.getBean("address3");
System.out.println(address);
address = (Address) ctx.getBean("address2");
System.out.println(address);
Person person = (Person) ctx.getBean("person");
System.out.println(person);
}
}
beans-relation.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 抽象 bean:bean 的 abstract 属性为 true 的 bean,这样的 bean 不能被 IOC 容器实例化,只用来被继承配置
若某一个 bean 的 class 属性没有指定,则该 bean 必须是一个抽象 bean-->
<bean id="address" p:city="BeiJing^" p:street="WuDaoKou" abstract="true"></bean>
<!-- bean 配置的继承: 使用 bean 的 parent 属性指定继承哪个 bean 的配置 -->
<bean id="address2" class="com.test.sping.beans.autowire.Address"
parent="address"></bean>
<bean id="address3" class="com.test.sping.beans.autowire.Address"
p:street="DaZhongSi" parent="address2"></bean>
<bean id="car" class="com.test.sping.beans.autowire.Car"
p:brand="Audi" p:price="300000"></bean>
<!-- 要求在配置 Person 时,必须有一个关联的 car! 换句话说 person 这个 bean 依赖于 Car 这个 bean -->
<bean id="person" class="com.test.sping.beans.autowire.Person"
p:name="Tom" p:address-ref="address2" depends-on="car"></bean>
</beans>