`
leiwuluan
  • 浏览: 705162 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Spring bean的封装机制

阅读更多

Spring 从核心而言,是一个DI 容器,其设计哲学是提供一种无侵入式的高扩展性框架。即无需代码中涉及Spring专有类,即可将其纳入Spring容器进行管理。

作为对比,EJB则是一种高度侵入性的框架规范,它制定了众多的接口和编码规范,要求实现者必须遵从。侵入性的后果就是,一旦系统基于侵入性框架设计开发,那么之后任何脱离这个框架的企图都将付出极大的代价。

为了避免这种情况,实现无侵入性的目标。Spring 大量引入了Java Reflection机制,通过动态调用的方式避免硬编码方式的约束,并在此基础上建立了其核心组件BeanFactory,以此作为其依赖注入机制的实现基础。

org.springframework.beans包中包括了这些核心组件的实现类,核心中的核心为BeanWrapperBeanFactory类。这两个类从技术角度而言并不复杂,但对于Spring 框架而言,却是关键所在,如果有时间,建议对其源码进行研读,必有所获。

(1)BeanWrapper

Spring中的核心接口:通过配置文件中的设定,java Bean就可以在运行期动态创建对象并设定其属性(依赖关系)

(2)BeanFactory

Bean Factory,顾名思义,负责创建并维护Bean实例

Bean Factory负责根据配置文件创建Bean实例,可以配置的项目有:

<1> Bean属性值及依赖关系(对其他Bean的引用)

<2> Bean创建模式(是否Singleton模式,即是否只针对指定类维持全局唯一的实例)

<3> Bean初始化和销毁方法

<4> Bean的依赖关系

 

联合上面关于BeanWrapper的内容,我们可以看到,BeanWrapper实现了针对单个Bean的属性设定操作。而BeanFactory则是针对多个Bean的管理容器,根据给定的配置文件,BeanFactory从中读取类名、属性名/值,然后通过Reflection机制进行Bean加载和属性设定。

 

Spring中,BeanFactoryIOC容器的核心接口。它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。

(3)ApplicationContext

BeanFactory提供了针对Java Bean的管理功能,而ApplicationContext提供了一个更为框架化的实现(从上面的示例中可以看出,BeanFactory的使用方式更加类似一个API,而非Framework style)。ApplicationContext覆盖了BeanFactory的所有功能,并提供了更多的特性。此外,ApplicationContext为与现有应用框架相整合,提供了更为开放式的实现(如对于Web应用,我们可以在web.xml中对ApplicationContext进行配置)。相对BeanFactory而言,ApplicationContext提供了以下扩展功能:

<1> 国际化支持

我们可以在Beans.xml文件中,对程序中的语言信息(如提示信息)进行定义,将程序

中的提示信息抽取到配置文件中加以定义,为我们进行应用的各语言版本转换提供了极

大的灵活性。

<2> 资源访问

支持对文件和URL的访问。

<3> 事件传播

事件传播特性为系统中状态改变时的检测提供了良好支持。

<4> 多实例加载

可以在同一个应用中加载多个Context实例。

(4)Web Context

对于Web应用,Spring提供了可配置的Application Context加载机制。

加载器目前有两种选择:ContextLoaderListenerContextLoaderServlet。这两者在功能上完全等同,只是一个是基于Servlet2.3版本中新引入的Listener接口实现,而另一个基于Servlet接口实现。

开发中可根据目标Web容器的实际情况进行选择。

 

配置非常简单,在web.xml中增加:

<listener>

       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

或:

<servlet>

       <servlet-name>context</servlet-name>

       <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>

       <load-on-startup>1</load-on-startup>

</servlet>

 

通过以上配置,Web容器会自动加载/WEB-INF/applicationContext.xml初始化Application Context实例,如果需要指定配置文件位置,可通过context-param加以指定:

<context-param>

       <param-name>contextConfigLocation</param-name>

       <param-value>/WEB-INF/myApplicationContext.xml</param-value>

</context-param>

 

配置完成之后,即可通过WebApplicationContextUtils.getWebApplicationContext方法在Web应用中获取ApplicationContext引用。

分享到:
评论
1 楼 leeny 2010-12-21  
学习了,3q!

相关推荐

    普元eos-springbean开发

    在普元EOS平台中,SpringBean同样扮演着重要角色,用于封装业务逻辑、数据访问等功能。通过合理地设计和配置SpringBean,可以极大地提高开发效率和系统的可维护性。 #### 开发前准备 - **首选项代码模板配置**:在...

    实例化Spring bean的两种工厂方法

    在Spring框架中,bean的实例化是其核心功能之一,它允许我们管理应用程序中的对象生命周期。本篇将详细探讨两种工厂方法——实例工厂方法和静态工厂方法,用于创建Spring Bean。 首先,我们要理解Spring Bean的概念...

    spring bean 属性总结

    `&lt;beans&gt;`元素是Spring配置文件的根元素,用于封装一个或多个`&lt;bean&gt;`元素。这使得开发人员能够在一个文件中定义和配置多个Bean,从而简化了应用程序的配置过程。 #### `&lt;bean&gt;` 元素 `&lt;bean&gt;`元素用于告诉Spring...

    spring中文教程

    Spring的Bean封装机制是其核心功能之一,主要包括: - **Bean Wrapper**:提供了一种访问和操作Bean属性的方法,支持读写操作,是Spring Bean管理的重要组成部分。 - **Bean Factory**:是Spring容器的基础,负责...

    spring guide

    通过对Spring框架核心概念的详细解读,如依赖注入的不同实现类型、Bean封装机制等,本书为开发者提供了坚实的基础,助力他们在实际项目中灵活运用Spring框架,构建高效、可维护的企业级应用程序。无论是新手还是有...

    spring教程+电子书

    - **Spring Bean 封装机制**: - **BeanWrapper**:提供了一种统一的方式处理不同类型的 Bean 属性。 - **BeanFactory**:负责实例化、定位和配置应用程序中的对象。 - **ApplicationContext**:扩展了 `...

    Spring 开发指南Xiaxin (夏昕)

    ### Spring 开发指南Xiaxin (夏昕)...此外,本书还介绍了依赖注入的不同实现方式及其优缺点,以及Spring框架提供的Bean封装机制等内容。对于希望深入理解和应用Spring框架的开发者来说,本书是一份不可多得的宝贵资料。

    Spring开发指南(中文版)

    - **Spring Bean封装机制**:Bean是Spring框架中的核心组件,用于表示应用程序中的对象。文档介绍了Bean Wrapper和Bean Factory两种Bean封装机制,前者提供了对Bean属性操作的封装,后者负责Bean实例的创建和管理,...

    spring框架,技术详解及使用指导

    #### Spring Bean封装机制 Spring框架提供了一种灵活的方式来管理对象的生命周期,这主要通过Bean Factory和ApplicationContext来实现。 - **Bean Wrapper**:Bean Wrapper提供了一种封装Bean的方法,它支持读取和...

    夏昕spring

    #### Spring Bean封装机制 Spring框架通过Bean Factory或ApplicationContext来管理对象的生命周期。Bean Factory是最基本的容器,负责实例化、定位和配置应用程序中的对象,即“Beans”。ApplicationContext则提供...

    Spring开发指南

    #### 四、Spring Bean封装机制 - **BeanWrapper**:是Spring提供的用于封装JavaBean的一个接口,它提供了对Bean属性的读写操作。 - **作用**:BeanWrapper提供了统一的接口来访问和修改Bean的属性,简化了对Bean的...

    spring技术详解

    #### Spring Bean封装机制 Spring框架通过Bean Wrapper和Bean Factory等机制来管理和封装Bean。 - **Bean Wrapper**:提供了对Bean属性的访问和操作。它可以用来获取或设置Bean的属性值。 - **Bean Factory**:是...

    Spring 开发指南

    #### Spring Bean封装机制 Spring通过Bean Wrapper和Bean Factory等机制实现了对Bean的封装和管理: - **Bean Wrapper**:提供了对Bean属性的访问和操作接口,支持属性的读取、设置和监听。 - **Bean Factory**:...

    Spring开发手册

    #### Spring Bean封装机制 Spring提供了多种机制来封装和管理Bean,包括: - **BeanWrapper**:提供了访问和操作Bean属性的统一接口,支持类型转换和属性编辑。 - **BeanFactory**:Spring的最基本工厂接口,负责...

    spring教程-经典官方教程(适合初学者)

    - SpringBean封装机制包括BeanWrapper、BeanFactory和ApplicationContext等概念,它们是Spring框架中管理Bean生命周期和依赖的核心组件。 - Spring高级特性章节讲解了Spring框架的高级用法,例如Web应用与MVC、...

    Spring中文教程+案例

    ##### Spring Bean封装机制 Spring框架通过一系列的API提供了强大的Bean封装功能。 - **BeanWrapper**:用于封装单个Bean对象,提供了统一的接口来操作Bean属性。 - **BeanFactory**:是Spring容器的基础接口,...

    spring+MVC中文教程pdf

    4. SpringBean封装机制:包括BeanWrapper、BeanFactory和ApplicationContext等接口的介绍及其在Spring中的作用。 5. Web应用与MVC:详细阐述了Spring MVC框架的结构和组件,包括控制器(Controller)、模型(Model...

Global site tag (gtag.js) - Google Analytics