spring学习笔记-IOC容器中bean的继承、抽象和依赖关系

1.bean的继承

IOC容器中bean的继承和java或者其他语言中传统意义上的继承并不一样,它并不是说将其他class中的属性或方法继承过来(比如我们的业务对象继承baseEntity对象,它相当于是一个增量的继承),而IOC容器中bean的继承更像是克隆一样,当我们继承了其他bean对象时,我们就相当于得到了一个被继承bean的克隆体,我们只需要起一个别名(bean的id属性)就可以了,或者也可以修改其中的某个属性。

在bean中使用parent属性继承bean对象

<bean id="rule1" class="com.hao.spring.user.Rule">
      <property name="ruleName" value="数据查看角色"></property>
      <property name="power" value="全数据查看权限"></property>
</bean>
<bean id="rule2" parent="rule1">
      <property name="power" value="rule2-全数据查看权限"></property>
</bean>

在测试类中获取并打印rule2对象在这里插入图片描述

2. bean的抽象

IOC容器中的抽象bean在创建容器时是不会被创建的,它的唯一作用就是作为克隆母体而存在的,它生来就是为了被继承的

我们可以看到之前我们的rule1和rule2都是普通对象,所以在创建容器时调用了两次rule的无参构造器,说明创建了两次rule对象
在这里插入图片描述
当我们把rule1声明为抽象对象时,再用user引用rule2,这时就只创建了一次rule对象,说明抽象的rule1并不会被容器创建
在bean标签中使用abstract属性,将该bean声明为抽象bean

<bean id="rule1" class="com.hao.spring.user.Rule" abstract="true">
        <property name="ruleName" value="数据查看角色"></property>
        <property name="power" value="全数据查看权限"></property>
</bean>

在这里插入图片描述

3. bean的依赖关系

bean依赖关系的配置是为了确定在创建当前bean时应该先创建哪个bean

  1. 没有引用且没有依赖关系时,容器中对象的创建顺序是按照顺序创建的
    在这里插入图片描述
  2. 当前bean有ref引用时,IOC容器会先创建当前对象,并在对进行当前对象的初始化赋值时遇到ref的属性,就会去检索IOC容器中的对象,如果没有创建就会先创建这个被引用的对象,如果初始化完成则创建下一个bean对象,但如果又遇到另一个ref引用对象,又会去检索IOC容器,直到完成对当前bean对象的创建
    在这里插入图片描述
  3. 所以当我们的bean对象需要去引用外部对象时,我们就可以使用depends-on=""属性指定依赖关系
<bean id="user" class="com.hao.spring.user.User" depends-on="rule2,org">
    <property name="rule" ref="rule2"></property>
    <property name="org" ref="org"></property>
</bean>

在这里插入图片描述

需要注意的是依赖的创建顺序与我们在depends-on属性中写的顺序是有关的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值