Spring2.5中bean定义的继承

来源:互联网 发布:手机要怎么录指纹 知乎 编辑:程序博客网 时间:2024/05/22 06:38

     在bean定义中包含了大量的配置信息,其中包括容器相关的信息(比如初始化方法、静态工厂方法等)以及构造器参数和属性值。子bean定义就是从父bean定义继承配置数据的bean定义。它可以覆盖父bean的一些值,或者添加一些它所需要的值。使用父子bean定义的方式可以节省很多的输入工作。实际上,它是一种模板形式。

     当使用BeanFactory进行编程时,子bean定义是用ChildBeanDefinition类来表示的。大多数bean的定义只是以类似XmlBeanFactory中的声明方式去配置bean定义。使用基于XML的方式配置元数据时,给bean的“parent”属性指定值,意味着子bean定义的声明。

    如果子bean没有指定class属性,那么默认情况下使用父bean的class属性。当然也可以覆盖它。后一种情况下,子bean的class属性值必须同父bean兼容,也就是说它必须接受父bean的属性值。

    一个子bean的定义可以从父bean定义中继承构造器参数、属性值以及覆盖父bean的方法。并且可以有选择增加新值,如果指定了init-method、destory-method或者静态fatory-method方法,它们会覆盖父bean的配置。

    而依赖、自动装配模式、依赖检查、singleton、作用域和延迟初始化都总是从子bean定义中得到。

    注意: 使用abstract属性显示的将父bean定义成抽象的。

    默认情况下,ApplicationContext会预初始化所有singleton的bean,所以防止容器预初始化抽象父bean,必须将父bean的abstract属性指定为“true”。

原创粉丝点击