spring bean 继承与 java 继承异同

bean的定义中可能会包含大量的配置信息,包括容器相关的信息,构造函数参数,属性等;如果两个bean之间的配置信息大同小异,可采用bean继承来减少重复配置的工作,子bean定义可以从父bean定义继承部分配置,它可以添加部分配置,或者覆盖一些配置,其实这是一种模板形式。

父bean通常不需要实例化,仅仅作为子bean定义的模板使用,ApplicationContext默认预初始化所有的singleton行为的bean,为了阻止父bean被预初始化,可使用abstract属性设置父bean为抽象bean,容器会忽略所有抽象bean的定义,预初始化时不初始化抽象bean。

子bean定义可以从父bean继承实现类,构造器参数,属性值,注意,这里bean是抽象的,但是bean的实现类并不是抽象的

Spring 中bean的继承和Java中的继承截然不同,前者是实例与实例之间的参数的延续,后者是一般到特殊的细化,前者是对象和对象之间的关系,后者是类和类之间的关系。

a.Spring中的子bean和父bean可以是不同的类型,但是Java中的继承,子类是一种特殊的父类;

b.Spring中的bean的继承是实例之间的关系,主要表现在参数的延续,而Java中的继承是类与类之间的关系,主要体现在方法和属性的延续。

c.Spring中子bean不可以作为父bean使用,不具备多态性,Java中的子类实例完全可以当作父类实例使用。

[color=red]spring 中定义parent 的情况:
baseDao 配置为基bean 注入数据源。 其他Dao 可以指定该基bean 为parent ,减少重复配置 继承的是实例的参数,如果不设置基bean,则每个dao都要自行注入数据源,重复配置很多。

同时基于java类的继承,则同样可以使用基类中的函数、方法等。
如果dao继承了父类,但是spring bean配置中没有指定其为parent,则不能继承父类中注入的参数。[/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值