1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="
  6. http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  10. <bean id="address" p:city="BeiJing^" p:street="WuDaoKou" class="com.lijunyang.model.Address" />
  11. <bean id="address2" p:street="DaZhongSi" parent="address" />
  12. </beans>

继承Bean配置

  • Spring允许继承bean的配置,被继承的bean称之为父bean,继承这个父Bean的Bean称为子Bean
  • 子Bean从父Bean中继承配置,包括Bean的属性配置
  • 子Bean也可以覆盖从父Bean继承过来的配置
  • 父Bean作为模版,可以设置的abstract属性为true,这样Spring将不会实例化这个Bean
  • 并不是元素里所有的属性都会被继承,比如:autowire,abstract等
  • 也可以忽略父Bean的class属性,让子Bean指定自己的类,而共享相同的属性配置,但此时父Bean abstract必须设为true

    依赖Bean配置

  • Spring 允许用户通过depends-on属性设定Bean前置依赖的Bean,前置依赖的Bean会在本Bean实例化之前创建好

  • 如果前置依赖于多个Bean,则可以通过逗号,空格或的方式配置Bean的名称

image.png

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="
  6. http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  10. <bean id="address" p:city="BeiJing^" p:street="WuDaoKou" class="com.lijunyang.model.Address" />
  11. <bean id="address2" p:street="DaZhongSi" parent="address" />
  12. // 此时如果没有car,则程序抛出异常
  13. <bean id="preson" p:name="Tom" p:address-ref="address" depends-on="car" />
  14. // 有了car,则上面的preson就不会报错了,但是因为没有p:car-ref="car"
  15. // ,所以上面实例化的bean没有car对象
  16. <bean id="car" class="com.lijunyang.model.Car" p:brand-ref="Audi" p:price-ref="300000" />
  17. </beans>