`
zhangshixi
  • 浏览: 676417 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring学习系列:Spring容器

阅读更多

容器 是Spring框架的核心,是组件存活的地方。Spring容器使用DI管理所有组成应用系统的组件,协作组件之间建立联。而且,

       这些对象简洁易懂,降低耦合性,支持重用,容易被测试。

 

Spring提供了多种容器实现,可分为两类:Bean工厂应用上下文

 

1. BeanFactory :由org.springframework.beans.factory.BeanFactory接口定义,是最简单的容器,提供了基础的依赖注入支持。

    BeanFactory采用了工厂设计模式,负责创建和分发各种类型的Bean,创建协作对象间的关联关系,管理Bean的生命周期,调用

    用户定义的初始化和销毁方法(如果定义了这些方法的话)等。

    BeanFactory有多种实现,其中,最常用的是XMLBeanFactory,它根据XML文件中的定义装载Bean。在创建XMLBeanFactory

    时,需要传递一个org.springframework.core.io.Resource的实例给构造器,此Resource实例用来提供XML文件给BeanFactory。

    Spring提供了以下多种Resource的实现:

    Resource实现 描述
    1. org.springframework.core.io.ByteArrayResource 定义内容由一组字节给定的资源
    2. org.springframework.core.io.ClassPathResource 定义可从classpath提起的资源
    3. org.springframework.core.io.DescripiveResource 定义包含资源描述符,但实际没有可读资源的资源
    4. org.springframework.core.io.FileSyatemResource 定义可从文件系统提取的资源
    5. org.springframework.core.io.InputStreamResource 定义可从输入流提取的资源
    6. org.springframework.core.io.UrlResource 定义可从给定URL提取的资源
    7. org.springframework.web.portlet.context.PortletContextResource 定义可用在portlet上下文中的资源
    8. org.springframework.web.context.support.ServletContextResource 定义可用在servlet上下文中的资源

    例如使用FileSystemResource来创建一个XMLBeanFactory,代码如下:

    /**
     * Bean工厂从"c:/beans.xml"文件中读取Bean的定义信息,并启动容器。
     * Bean载入时间:此时,Bean工厂并没有实例化Bean。即Bean是被延迟载入到Bean工厂中的,
     * 在需要使用Bean的时候(调用getBean("beanName"))才被实例化。
     */
    BeanFactory factory = new XmlBeanFactory(new FileSystemResource("c:/beans.xml"));

    /**
     * 实例化Bean,并使用依赖注入设置Bean的属性及关联关系等。
     */
    MyBean myBean = factory.getBean("myBean");

 

2. ApplicationContext :由org.springframework.context.ApplicationContext接口定义,建立在BeanFactory基础之上,提供了系统构架

    服务。如:文本信息解析工具,包括对国际化(I18N)的支持;载入文件资源的通用方法;可以向注册为监听器的Bean发送事件等。

    ApplicationContext的诸多实现中,经常会用到的有以下三种实现:

   ApplicationContext实现 描述
   1. org.springframework.context.support.ClassPathXMLApplicationContext 从类路径中的XML文件载入上下文定义信息
   2. org.springframework.context.support.FileSystemXmlApplicationContext 从文件系统中的XML文件载入上下文定义信息
   3. org.springframework.web.context.support.XMLWebApplicationContext 从Web系统中的XML文件载入上下文定义信息

    从文件系统或者类路径载入应用上下文与将Bean载入BeanFactory类似,例如:

    /**
     * Bean载入时间:在上下文启动后预载入所有的单实例Bean,确保在使用前已经准备好了,不需要等待它们被创建。
     */
    ApplicationContext context1 = new FileSystemXmlApplicationContext("c:/beans.xml");
    MyBean myBean = factory.getBean("myBean");
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
MyBean myBean = factory.getBean("myBean");

    使用FileSystemXmlApplicationContext与ClassPathXMLApplicationContext的区别是:

    前者只能在指定的路径中查找;后者可在整个类路径(包括JAR文件)中查找XML文件。

 

3. 如何选择使用容器?

    ApplicationContext包含BeanFactory的所有功能,几乎所有的应用系统都选择ApplicationContext而不是BeanFactory。

    只有在资源很少的情况下,才会考虑采用BeanFactory,如在移动设备上等。

5
0
分享到:
评论

相关推荐

    Spring技术内幕:深入解析Spring架构与设计原理

    一部分详细分析了Spring的核心:IoC容器和AOP的实现,能帮助读者了解Spring的运行机制;第二部分深入阐述了各种基于IoC容器和AOP的Java EE组件在Spring中的实现原理;第三部分讲述了ACEGI安全框架、DM模块以及Flex...

    Spring技术内幕:深入解析Spring架构与设计原理(第2版) .pdf

    - **反转控制**:Spring通过IoC容器来管理对象生命周期,开发者无需关心对象的创建和销毁过程,而是将其交给Spring容器处理。 - **代理模式**:在Spring AOP中,代理模式被广泛应用于实现横切关注点,例如通过动态...

    Spring技术内幕:深入解析Spring架构与设计原理.pdf

    Spring技术内幕:深入解析Spring架构与设计原理 Spring技术内幕 Spring是一个基于Java的开源框架,旨在简化Java企业应用的开发。Spring的目标是提供一个简洁、灵活、可扩展的框架,以帮助开发者快速构建企业级...

    Spring技术内幕:深入解析 Spring架构与设计原理.pdf

    第一部分详细分析了Spring的核心:IoC容器和AOP的实现,能帮助读者了解Spring的运行机制;第二部分深入阐述了各种基于IoC容器和AOP的Java EE组件在Spring中的实现原理;第三部分讲述了ACEGI安全框架、DM模块以及Flex...

    Spring技术内幕:深入解析Spring架构与设计原理[汇编].pdf

    * IoC容器(Inversion of Control):Spring的核心是IoC容器,IoC容器负责管理Bean的生命周期和依赖关系。 * 依赖注入(Dependency Injection): Spring使用依赖注入来解耦合应用程序中的组件,提高系统的灵活性...

    Spring技术内幕:深入解析Spring架构与设计原理(第1部分)

     Spring产品级的IoC容器是如何作为一个完整的系统实现并运行的?它如何启动?如何完成Bean的解析和载入?又如何实现Bean的生命周期管理?  Spring如何简捷地在JVM上实现AOP功能?  Spring AOP如何实现Aspect编织...

    Spring技术内幕:深入解析Spring架构与设计原理(第2版)+.pdf

    - **核心容器**:Spring框架的核心容器包括BeanFactory和ApplicationContext。BeanFactory是最基本的容器,负责管理对象的生命周期和配置数据。ApplicationContext则是在BeanFactory的基础上扩展了更多功能,比如...

    Spring技术内幕:深入解析Spring架构与设计原理(第2部分)

     Spring产品级的IoC容器是如何作为一个完整的系统实现并运行的?它如何启动?如何完成Bean的解析和载入?又如何实现Bean的生命周期管理?  Spring如何简捷地在JVM上实现AOP功能?  Spring AOP如何实现Aspect编织...

    SPRING技术内幕:深入解析SPRING架构与设计原理_spring_

    Spring容器管理的对象称为Bean,它有完整的生命周期,包括初始化、使用和销毁。开发者可以自定义初始化和销毁方法,或者使用BeanPostProcessor接口进行扩展。 4. **DI(Dependency Injection)**: DI是IoC的一个...

    SPRING技术内幕:深入解析SPRING架构与设计原理

    Spring容器(如BeanFactory和ApplicationContext)是Spring框架的基石,负责管理Bean的生命周期和依赖关系。读者将学习到如何创建和配置容器,以及如何使用容器中的Bean。 4. **AOP**: AOP是Spring提供的一种...

    学习笔记:尚硅谷Spring6基础篇

    ### 学习笔记:尚硅谷Spring6基础篇 #### 一、Spring框架概述 ##### 1.1 Spring是什么? Spring是一款主流的Java EE轻量级开源框架,由“Spring之父”Rod Johnson提出并创立。Spring的主要目标是简化Java企业级...

    springIOC核心组件分析.vsdx

    spring-context:上下文,即IOC容器 spring-context-support:对IOC的扩展,以及IOC子容器 spring-context-indexer:类管理组件和Classpath扫描 spring-expression:表达式语句 切面编程: spring-aop:面向切面编程,...

    spring-framework-5.3.23 源码

    当一个类需要另一个类时,不再需要在代码中直接创建对象,而是声明需要的依赖,Spring容器会在运行时自动将依赖注入到需要的地方。 面向切面编程(Aspect-Oriented Programming,简称AOP)是Spring提供的另一大特性...

    Spring技术内幕:深入解析Spring架构与设计原理(第一部分)

     Spring产品级的IoC容器是如何作为一个完整的系统实现并运行的?它如何启动?如何完成Bean的解析和载入?又如何实现Bean的生命周期管理?  Spring如何简捷地在JVM上实现AOP功能?  Spring AOP如何实现Aspect编织...

    JAVA spring 系列案例50个和学习资料

    Spring系列第3篇:Spring容器基本使用及原理。Spring系列第4篇:xml中bean定义详解(-)Spring系列第5篇:创建bean实例这些方式你们都知道?Spring系列第6篇:玩转bean scope,避免跳坑里!Spring系列第7篇:依赖注入...

    SPRING技术内幕:深入解析SPRING架构与设计原理.pdf 下载

    Spring容器负责管理对象的生命周期和配置,这样开发者就不必关心对象的创建和销毁过程。 #### 2. Bean Bean是Spring框架中的核心概念之一,指的是被Spring IoC容器所管理的对象。Bean通常是由配置文件或注解定义的...

Global site tag (gtag.js) - Google Analytics