Spring4---Bean之间的关系

观察问题

  • 在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>

<!--设置parent属性,继承beijing1的属性配置-->
<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>

<!--设置parent属性,继承beijing1的属性配置-->
<bean id="beijing2" class="mao.shu.spring.parent.City" parent="beijing1"
      p:postcode="88989"
      p:street="广场">
</bean>

依赖 Bean 配置

在这里插入图片描述

  • 示例:日期类型的注入,定义依赖关系
<!--info实例中需要注入日期的属性,
而日期属性的注入依靠simpleDateFormart的Bean完成字符串到日期类型的转换
所以必须在simpleDateFormart这个Bean实例化完成之后才可以进行info的Bean属性注入
因此可以设置info的Bean的depends-on属性配置info依赖的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);
    }

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43386754/article/details/88069343