spring 配置中相关属性的含义:

1:parent元素属性

一个bean定义可能会包含大量的配置信息,包括容器相关的信息(比如初始化方法,静态工厂方法等等)以及构造函数参数和属性的值。一个child bean定义是一个能够从parent bean定义继承配置数据的bean定义。然后它可以覆盖一些值,或者添加一些其他需要的。使用父和子的bean定义可以节省很多的输入工作。实际上,这就是一种模版形式。当编程式地使用一个BeanFactory,child bean定义用ChildBeanDefinitiaon类表示。大多数的用户从来不需要在这个级别上使用它们,取而代之的是,在诸如XmlBeanFactory中声明式地配置bean定义。在一个XmlBeanFactory的bean定义中,使用parent属性指出一个child bean定义,而parent bean则作为这个属性的值。

<bean id="inheritedTestBean" class="org.springframework.beans.TestBean">
    <property name="name"><value>parent</value></property>
    <property name="age"><value>1</value></property>
</bean>
<bean id="inheritsWithDifferentClass"
class="org.springframework.beans.DerivedTestBean"
       parent="inheritedTestBean" init-method="initialize">
    <property name="name"><value>override</value></property>
    <!-- age should inherit value of 1 from parent -->
</bean>

 如果child bean定义没有指定class,一个child bean定义将使用父定义的class,当然也可以覆盖它。在后面一种情况中,child bean的class必须同parent bean的兼容,比如它必须能够接受父亲的属性值。
一个child bean定义将会从父亲处继承构造函数参数,属性值以及方法,并且可以选择地增加新的值。如果初始化方法,销毁方法和/或静态工厂方法被指定了,它们就会覆盖父亲相应的设置。
剩余的设置将总是从子定义处得到:depends on, autowire mode, dependency check, singleton, lazy init。
在下面的例子中父定义并没有指定一个class: 

<bean id="inheritedTestBeanWithoutClass">
    <property name="name"><value>parent</value></property>
    <property name="age"><value>1</value></property>
</bean>
<bean id="inheritsWithClass" class="org.springframework.beans.DerivedTestBean"
      parent="inheritedTestBeanWithoutClass" init-method="initialize">
    <property name="name"><value>override</value></property>
    <!-- age should inherit value of 1 from parent -->
</bean>

  这个parent bean就无法自己实例化;它实际上仅仅是一个纯模版或抽象bean,仅仅充当子定义的父定义。若要尝试单独使用这样的parent bean(比如将它作为其他bean的ref属性而引用,或者直接使用这个parent bean的id调用getBean()方法),将会导致一个错误。同样地,容器内部的preInstantiateSingletons方法会完全忽略这种既没有parent也没有class属性的bean定义,因为它们是不完整的。
重要的注意点:这里并没有办法显式地声明一个bean定义为抽象的。如果一个bean确实有一个class定义,那么它就能够被实例化。而且要注意XmlBeanFactory默认地将会预实例化所有的singletons。因此很重要的一点是:如果你有一个(父)bean定义指定了class属性,而你又想仅仅把它当作模板使用,那么你必须保证将lazy-init属性设置为true(或者将bean标记为non-singleton),否则XmlBeanFactory(和其他可能的容器)将会预实例化它。

时间: 2024-08-14 05:01:31

spring 配置中相关属性的含义:的相关文章

Spring配置中的bean直接引用其它bean的属性值

pring配置中的bean直接引用其它bean的属性值来赋值给当前bean的属性,也可以直接调用其它bean的方法获取返回值来赋值给当前bean的属性,并且可以进行参数传递,这样可以省去在bean中注入需要获取属性值的bean. 以下是一个完整的示例: 1.需要JAVA类: Spring配置中的bean直接引用其它bean的属性值 package com.service.test; public class Bean1 { int v1 = 1; public int getV1() { ret

spring 配置中 merge的使用

在spring 的配置中共用属性模版时,使用parent='parentBean',如果parentBean里面有个List集合属性,子类还想在这个List里面添加元素,这是怎么办呢? public class Person {         private List<Address> addresses;         ..     } <bean name='basePerson' class='Person' abstract='true'>  <property 

解决spring配置中的bean类型的问题:BeanNotOfRequiredTypeException

解决spring配置中的bean类型的问题:BeanNotOfRequiredTypeException这个问题出现的原因:一般在使用annotation的方式注入spring的bean 出现的,具体是由于spring采用代理的机制导致的,看使用的代码: Java代码 1. 使用类注入: @Resource(name = "aisleService") private AisleService aisleService; 2. 使用接口注入: @Resource(name = &quo

Spring中Bean的作用域、Spring的自动注入、在spring配置文件中引入属性文件

1. Bean的作用域 Bean的作用域默认为单例模式. 2. 自动注入 3. 在spring配置文件中引入属性文件 Bean的作用域默认为单例模式. 原文地址:https://www.cnblogs.com/mcl2238973568/p/11478426.html

Spring 配置中 bean 的 class 使用工厂 Bean 的含义解析

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. <bean id="studentMapper" class="org.mybatis.spring.Mapp

Spring配置中 bean上的属性parent的作用

省去多余的父类配置,比如 事务管理: <bean id="basicTxProxy2" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager" ref="transactionManager2

spring配置中,properties文件以及xml文件配置问题

spring方便我们的项目快速搭建,功能强大,自然也会是体系复杂! 这里说下配置文件properties管理的问题. 一些不涉及到代码逻辑,仅仅只是配置数据,可以放在xxxx.properties文件里面,项目功能复杂的时候,往往properties文件很多,这时,就比较容易让人困惑,有些properties的文件内容总是加载不起来,应用启动时,就不断爆出错误,说某某参数加载失败,这个是什么原因呢? 其实,这个是spring配置的时候,org.springframework.beans.fact

Meta标签中的属性及含义

一.Meta标签中的format-detection属性及含义 format-detection翻译成中文的意思是“格式检测”,顾名思义,它是用来检测html里的一些格式的,那关于meta的format-detection属性主要是有以下几个设置: meta name="format-detection" content="telephone=no" meta name="format-detection" content="email

Android在Layout配置文件中配置颜色相关属性遇到的问题

今天朋友碰到一个问题,他的Android程序一启动就报错,Logcat报错有一个Fragment的Layout布局文件某一行解析错误. 是一个RadioGroup 其中的 RadioButton 设置了textColor属性,问题就在这里,textColor设置为一个选择器,但是这个选择器放在了drawable里面. 问题来了,textColor属性需要的是一个color 当一个选择器selector放置在drawable中的时候,解析时会按照图像进行解析. 解决问题方式: 在res文件夹中创建