【转】Spring Bean属性解析

转载自:http://wenku.baidu.com/view/30c7672cb4daa58da0114ae2.html

Bean所以属性一览:

<bean
    id="beanId"(1)
    name="beanName"(2)
    class="beanClass"(3)
    parent="parentBean"(4)
    abstract="true | false"(5)
    singleton="true | false"(6)
    lazy-init="true | false | default"(7)
    autowire="byName | byType | constructor | autodetect | default"(8)
    dependency-check = "none | objects | simple | all | default"(9)
    depends-on="dependsOnBean"(10)
    init-method="method"(11)
    destroy-method="method"(12)
    factory-method="method"(13)
    factory-bean="bean">(14)
</bean>

1.parent

表示继承的父类

如果有很多继承同一个父类的BEAN

那么在配置文件中实例那些BEAN时候可以省略掉父类已经注入的属性

bean定义继承父bean定义,它可以覆盖父bean的一些值,或者它需要的值。

那么在配置文件中实例那些BEAN时候可以省略掉父类已经注入的属性

  

2.list, set, map和props元素分别用来设置类型为List,Set,Map和Propertis的属性值。分别用来为bean传入集合值。

对应的spring的配置文件举例如下:

< bean  id ="chinese"  class ="Chinese" >
  < property  name ="friends" >
             < list >
                 < value > 张三 </ value >
                 < value > 李四 </ value >
                 < value > 王五 </ value >
             </ list >
   </ property >
   < property  name ="score" >
             < map >
                 < entry  key ="数学" >
                     < value > 60 </ value >
                 </ entry >
                 < entry  key ="英语" >
                     < value > 70 </ value >
                 </ entry >
                 < entry  key ="语文" >
                     < value > 80 </ value >
                 </ entry >
                 < entry  key ="物理" >
                     < value > 90 </ value >
                 </ entry >
                 < entry  key ="化学" >
                     < value > 95 </ value >
                 </ entry >
             </ map >
   </ property >
   < property  name ="basicInfo" >
             < props >
                 < prop  key ="身高" > 165 </ prop >
                 < prop  key ="体重" > 45kg </ prop >
                 < prop  key ="学历" > 大学本科 </ prop >
             </ props >
    </ property >
    < property  name ="interest" >
             < set >
                 < value > 唱歌 </ value >
                 < value > 跳舞 </ value >
                 < value > 书法 </ value >
             </ set >
    </ property >
 </ bean >

对应的java代码如下:

public   class  Chinese  implements  People   ...{
     private  List friends  =   new  ArrayList();
     private  Map score  =   new  HashMap();
     private  Properties basicInfo  =   new  Properties();
     private  Set interest  =   new  HashSet();
     // 省略对应set方法
}

3.maxSize表示每页显示数据的最大值

<property name="maxSize"><value>20</value></property> 

4.id: Bean的唯一标识名。它必须是合法的XML ID,在整个XML文档中唯一。

5.name: 用来为id创建一个或多个别名。它可以是任意的字母符合。多个别名之间用逗号或空格分开。

6.class: 用来定义类的全限定名(包名+类名)。只有子类Bean不用定义该属性。

7.abstract(默认为”false”):用来定义Bean是否为抽象Bean。它表示这个Bean将不会被实例化,一般用于父类Bean,因为父类Bean主要是供子类Bean继承使用。

8.singleton(默认为“true”):定义Bean是否是Singleton(单例)。如果设为“true”,则在BeanFactory作用范围内,只维护此Bean的一个实例。如果设为“flase”,Bean将是Prototype(原型)状态,BeanFactory将为每次Bean请求创建一个新的Bean实例。

9.lazy-init(默认为“default”):用来定义这个Bean是否实现懒初始化。如果为“true”,它将在BeanFactory启动时初始化所有的Singleton Bean。反之,如果为“false”,它只在Bean请求时才开始创建Singleton Bean。

10.autowire(自动装配,默认为“default”):它定义了Bean的自动装载方式。

    1、“no”:不使用自动装配功能。

    2、“byName”:通过Bean的属性名实现自动装配。

    3、“byType”:通过Bean的类型实现自动装配。

    4、“constructor”:类似于byType,但它是用于构造函数的参数的自动组装。

    5、“autodetect”:通过Bean类的反省机制(introspection)决定是使用“constructor”还是使用“byType”。

11.dependency-check(依赖检查,默认为“default”):它用来确保Bean组件通过JavaBean描述的所以依赖关系都得到满足。在与自动装配功能一起使用时,它特别有用。

1、 none:不进行依赖检查。

2、 objects:只做对象间依赖的检查。

3、 simple:只做原始类型和String类型依赖的检查

4、 all:对所有类型的依赖进行检查。它包括了前面的objects和simple。

12.depends-on(依赖对象):这个Bean在初始化时依赖的对象,这个对象会在这个Bean初始化之前创建。

13.init-method:用来定义Bean的初始化方法,它会在Bean组装之后调用。它必须是一个无参数的方法。

14.destroy-method:用来定义Bean的销毁方法,它在BeanFactory关闭时调用。同样,它也必须是一个无参数的方法。它只能应用于singleton Bean。

15.factory-method:定义创建该Bean对象的工厂方法。它用于下面的“factory-bean”,表示这个Bean是通过工厂方法创建。此时,“class”属性失效。

16.factory-bean:定义创建该Bean对象的工厂类。如果使用了“factory-bean”则“class”属性失效。

时间: 2024-11-03 22:44:55

【转】Spring Bean属性解析的相关文章

spring bean属性及子元素使用总结

spring bean属性及子元素使用总结 2016-08-03 00:00 97人阅读 评论(0) 收藏 举报  分类: Spring&SpringMVC(17)  版权声明:本文为博主原创文章,未经博主允许不得转载. spring框架中主要有四种标签bean.alias.import.beans,其中bean标签是其他标签的基础,此文主要对bean标签的属性及其子元素进行讨论,废话不多,请往下看. 一.bean标签的属性 1)scope:用来配置spring bean的作用域 2)singl

Spring bean定义解析源码分析

在上一篇Spring IOC容器启动简介中在ClassPathXmlApplicationContext的基础粗略的分析了IOC容器的启动过程,对一些比较复杂的步骤没有详细的说明,从本篇开始对其中的一些比较复杂的步骤进行分析.本篇对基于ClassPathXmlApplicationContext的IOC容器的bean定义的解析与加载过程进行分析.bean定义解析加载的简单时序图如下: bean定义的解析通过XmlBeanDefinitionReader来完成,在解析前先做一些准备工作:1.设置环

如何注入值到Spring bean属性

在Spring中,有三种方式注入值到 bean 属性. 正常的方式 快捷方式 “p” 模式 看到一个简单的Java类,它包含两个属性 - name 和 type.稍后将使用Spring注入值到这个 bean 属性. package com.yiibai.common; public class FileNameGenerator { private String name; private String type; public String getName() { return name; }

注入值到Spring bean属性

在Spring中,有三种方式注入值到 bean 属性. 正常的方式 快捷方式 "p" 模式 正常方式: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/s

反射-Spring管理Bean,注入Bean属性的反射机制。

#反射 1.是JAVA API,是Java提供的现成的类!! --接受API提供的功能! 2. 是Java提供的动态执行机制,动态加载类,动态创建对象,动态访问属性,动态调用方法. ##反射用途 1. eclipse 中解析类的结构使用了反射 2.JUnit识别被测试方法使用了反射 -- JUnit3 利用了反射查找test开头的方法 -- JUnit4 利用了反射解析@Test查找测试方法 3.Spring 管理Bean对象,注入Bean属性使用了反射 --利用反射创建Bean对象实例 --利

【spring源码分析】--Bean的解析与注册

接着上一节继续分析,DefaultBeanDefinitionDocumentReader的parseBeanDefinitions方法: protected void parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate) { if (delegate.isDefaultNamespace(root)) { NodeList nl = root.getChildNodes(); for (int i =

spring bean源码简单解析

最近在看spring的源码,发现看这个还是有点早,看的很吃力,有多东西还不是很明白,像代理等, 我感觉spring用abstract模板来写主要功能,用接口来拓展功能,用的出神入化,但也让很多简单 的东西变得不那么好懂了,就是写的啰嗦了,个人感觉.下面就是下spring bean源码的学习: private static final Resource RETURNS_NULL_CONTEXT = qualifiedResource(CLASS, "returnsNull.xml");

spring beans源码解读之--bean definiton解析器

spring提供了有两种方式的bean definition解析器:PropertiesBeanDefinitionReader和XmLBeanDefinitionReader即属性文件格式的bean definition解析器和xml文件格式的bean definition解析器. 我们先从简单的PropertiesBeanDefinitionReader开始深入挖掘. 1. PropertiesBeanDefinitionReader 属性文件bean definition解析器 1.1  

Spring源码解析(四)Bean的实例化和依赖注入

我们虽然获得了Bean的描述信息BeanDefinition,但是什么时候才会真正的实例化这些Bean呢.其实一共有两个触发点,但是最后实际上调用的是同一个方法. 第一个:在AbstractApplicationContext的refresh()方法中,容器会初始化lazy-init=false的bean. // Instantiate all remaining (non-lazy-init) singletons. finishBeanFactoryInitialization(beanFa