`
zyl
  • 浏览: 486753 次
社区版块
存档分类
最新评论

spring 代码分析之 beans

阅读更多

    这几天,闲着无事,看起了spring的源码,顺便也学习一下,人家的设计理念。
    spring的源码还是比较多的,但是区分的层次比较可以。对比了一下自己设计的程序,有点惭愧,每次分包的时候,设计的都比较烂。
    闲话少说,先来看看spring 的核心包beans。
    beans 包主要提供了接口和类用于处理java beans。
    其中最主要的接口是BeanWrapper:
    Spring 的中心接口,用于访问javabeans 的低层操作。默认实现为BeanWrapperImpl 提供分析和处理标准java beans 用于get 和set 属性,取得属性描述,查询属性的读/写能力。
    用法非常简单
    TestBean tb = new TestBean();
    BeanWrapper bw = new BeanWrapperImpl(tb);
    bw.isReadableProperty("age");//判断age属性是否可读
    bw.setPropertyValue("name", "tom"); //设置name属性的值为tom
    bw.getPropertyValue("int2")//取得属性
    //当然,最强大的是能嵌套设置属性,如:
    //tb中有个spouse的属性,也为TestBean,这样
    bw.setPropertyValue("spouse.name", "tom"); 
    //等价于tb.getSpouse().setName("tom");
    //bw 同样支持数组和集合,map属性设置
    bw.getPropertyValue("array[0].name");
    bw.getPropertyValue("map[key4][0].name");
    
    beans包 还提供了一个PropertyValues用于保存多个属性值,默认的实现MutablePropertyValues 
    MutablePropertyValues pvs = new MutablePropertyValues();
    pvs.addPropertyValue("array[0].name", "name5");
    pvs.addPropertyValue("array[1].name", "name4");
    bw.setPropertyValues(pvs);
   
    BeanWrapper的层次结构,也比较简单继承于ConfigurablePropertyAccessor ,而ConfigurablePropertyAccessor 又继承于PropertyAccessor 和   PropertyEditorRegistry 接口。
   有一点不太明白,为什么ConfigurablePropertyAccessor 要继承于PropertyEditorRegistry 
    PropertyEditorRegistry 的主要作用是提供方法用于注册JavaBeans PropertyEditors。默认的实现为PropertyEditorRegistrySupport
<o:p>   这就使得BeanWrapperImpl 也需要继承PropertyEditorRegistrySupport,从字面意义上来说,两个类不是很有关系,其实最主要用到的方法,也就是registerDefaultEditors(),注册spring中所有的属性编辑类。
   beans 包中还有两个接口TypeConverter和Mergeable 。TypeConverter由BeanWrapperImpl实现,主要用于转换属性值。其主要的工作由TypeConverterDelegate 这个包内类完成的。Mergeable 主要是用来合并值得,不过具体的实现,在org.springframework.beans.factory.support 包中。
   beans 包中提供了两个有用的工具类,BeanUtils和PropertyAccessorUtils。

</o:p>

 



分享到:
评论

相关推荐

    Spring源码解析.zip

    本压缩包“Spring源码解析”提供了对Spring框架核心组件——IOC(Inversion of Control,控制反转)、AOP(Aspect Oriented Programming,面向切面编程)以及Transaction(事务管理)的源码分析,帮助开发者更全面地...

    spring-beans源码

    Spring框架是Java开发中不可或缺的部分,其核心组件之一就是`spring-beans`模块。这个模块主要负责Spring容器的创建、管理Bean的生命周期以及依赖注入(Dependency Injection,简称DI)。在本文中,我们将深入探讨`...

    Spring源码深度解析第二版

    Spring源码深度解析第二版 Spring是一款广泛应用于Java企业级应用程序的开源框架,旨在简化Java应用程序的开发和部署。Spring框架的核心主要包括了IoC容器、AOP、MVC框架等模块。 第1章 Spring整体架构和环境搭建 ...

    spring-beans.zip

    《Spring Beans 模块详解与版本差异分析》 Spring框架是Java开发中广泛使用的轻量级框架,其中Spring Beans模块是其核心组成部分,它负责管理对象的生命周期和依赖注入。本篇文章将深入探讨Spring Beans的功能特性...

    spring-beans-groovy源码

    《深入剖析Spring Beans与Groovy集成的源码》 在软件开发中,Spring框架以其强大的依赖注入和面向切面编程特性,成为了Java企业级应用的事实标准。而在动态语言的使用上,Groovy凭借其简洁的语法和对Java平台的无缝...

    spring源码包.zip

    通过对这些模块的源码分析,我们可以深入了解Spring如何实现其强大的功能,并能更好地运用到实际项目中,提升代码质量和可维护性。无论是新手还是经验丰富的开发者,理解Spring的源码都将是一次宝贵的进阶之旅。

    spring-beans-3.0.2.RELEASE.jar.zip

    总的来说,Spring Beans是Spring框架的核心组件,它提供了IoC和DI的实现,通过容器管理对象生命周期,使我们的代码更加灵活、可维护。配合其他模块,如AOP和Quartz,Spring能为企业级应用提供全方位的支持。理解和...

    spring-beans

    本文将深入探讨"spring-beans"模块以及与之相关的知识。 首先,理解Bean是什么至关重要。在Spring中,Bean是指由Spring容器管理的对象,它负责创建、初始化、配置和管理这些对象的生命周期。Bean定义了对象的创建...

    spring源码分析(一)

    ### Spring源码分析知识点 #### 一、Spring框架概述 Spring框架是一个全面的企业级应用开发框架,它通过一系列模块化的组件来支持不同的应用场景和技术需求。Spring的核心价值在于提供了一种简洁的方式来解决企业...

    org.springframework.beans.factory.config.PropertyPlaceholderConfigurer

    总之,`org.springframework.beans.factory.config.PropertyPlaceholderConfigurer`是Spring框架中一个核心的配置组件,它简化了应用程序中对环境变量和系统属性的引用,提高了代码的可维护性和安全性。理解并熟练...

    spring beans dtd.zip

    今天我们将通过分析“spring beans dtd.zip”这个压缩包中的“spring beans dtd.dtd”文件,来探讨Spring Beans的配置模型,以及它如何与C#编程相结合。 首先,让我们理解DTD(Document Type Definition)的概念。...

    spring源码+spring所需jar包

    二、Spring源码分析 Spring源码的阅读可以帮助我们理解其内部机制,尤其是对于想要进行扩展或定制的人来说。Spring的核心组件如BeanFactory、ApplicationContext、AOP代理等都是源码探索的重点。其中: - **...

    spring 源码 官网资源

    以下是对Spring源码的详细解析: 1. **依赖注入(Dependency Injection, DI)**:Spring的核心特性之一,DI允许开发者将对象之间的依赖关系解耦,使得组件更易于测试和管理。在源码中,`org.springframework.beans....

    spring源码

    《深入剖析Spring源码:Ant与Maven2构建解析》 Spring框架作为Java开发领域中的核心组件,其源码的深度研究对于提升开发者的技术水平至关重要。本篇文章将围绕标题“spring源码”,深入探讨在Ant和Maven2两种构建...

    二、Spring源码分析——BeanFactory

    《Spring源码分析——BeanFactory》 在Java的IoC(Inversion of Control)和DI(Dependency Injection)领域,Spring框架扮演着至关重要的角色。BeanFactory是Spring的核心组件之一,它是容器的基石,负责管理应用...

    spring源码-2022-08-14spring源码spring源码spring源码

    Spring框架是Java开发中最广泛应用的轻量级框架之一,它以IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为核心,极大地简化了企业级应用的开发工作。在2022年8月14日...

    spring源码缺失的jar包

    在Spring框架的开发和学习过程中,源码分析是提升技能的重要环节。然而,有时当我们尝试导入Spring的源码时,可能会遇到编译错误,这通常是因为缺少了必要的依赖jar包。这两个关键的jar包对于理解Spring的工作原理...

    spring 1.2源代码

    通过阅读这些源代码,开发者可以学习到Spring如何实现依赖注入(Dependency Injection,DI),这是Spring的核心特性之一。DI使得对象之间的耦合度降低,提高了代码的可测试性和可维护性。此外,你还能看到AOP(面向...

    Spring源码解密之默认标签的解析

    本篇文章将深入解析Spring源码,聚焦于默认标签的解析,特别是`&lt;bean&gt;`标签的处理流程。 首先,Spring在解析XML配置时,会调用`DefaultBeanDefinitionDocumentReader`类来处理文档中的各个元素。`...

Global site tag (gtag.js) - Google Analytics