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

Spring容器

 
阅读更多

Spring容器

 

 

       容器 是Spring框架的核心,是组件存活的地方。Spring容器使用DI管理所有组成应用系统的组件,协作组件之间建立联。而且,这些对象简洁易懂,降低耦合性,支持重用,容易被测试。

 

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

 

 

 

BeanFactory

 

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,代码如下:

Java代码  收藏代码
  1. /** 
  2.  * Bean工厂从"c:/beans.xml"文件中读取Bean的定义信息,并启动容器。 
  3.  * Bean载入时间:此时,Bean工厂并没有实例化Bean。即Bean是被延迟载入到Bean工厂中的, 
  4.  * 在需要使用Bean的时候(调用getBean("beanName"))才被实例化。 
  5.  */  
  6. BeanFactory factory = new XmlBeanFactory(new FileSystemResource("c:/beans.xml"));  
  7.   
  8. /** 
  9.  * 实例化Bean,并使用依赖注入设置Bean的属性及关联关系等。 
  10.  */  
  11. MyBean myBean = factory.getBean("myBean");  

 

 

ApplicationContext

 

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类似,例如:

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

    使用FileSystemXmlApplicationContext与ClassPathXMLApplicationContext的区别是:

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

 

3. 如何选择使用容器?

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

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

分享到:
评论

相关推荐

    在非spring注解类中使用spring容器中的bean_普通类中使用yml配置文件中的配置信息

    然而,在某些情况下,我们可能需要在非Spring注解的类中访问Spring容器中的Bean,或者在这些类中使用YAML配置文件中的配置信息。本篇将详细介绍如何在这样的场景下实现这一目标。 首先,让我们来理解如何在非Spring...

    spring容器启动和关闭时事件监听

    spring容器启动和关闭时事件监听;spring容器启动和关闭时事件监听;spring容器启动和关闭时事件监听

    Spring简单模拟Spring容器

    标题中的“Spring简单模拟Spring容器”意味着我们将探讨Spring框架的核心特性——IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入),以及如何通过编程方式模拟Spring容器的工作原理。...

    Spring容器的通俗理解及简单写法

    Spring容器是Spring框架的核心组成部分,它负责管理对象的生命周期和对象间的依赖关系。在Java开发中,Spring容器(也称为ApplicationContext或BeanFactory)扮演着重要角色,它通过控制反转(Inversion of Control,...

    简单Spring容器实现

    本主题将深入探讨“简单Spring容器实现”,基于提供的标签“源码”和“工具”,我们将聚焦于Spring容器的原理及其简易实现。下面,我们先来理解Spring容器的核心概念,然后逐步探索其内部机制,并通过一个名为...

    JDK8 下 SpringBoot 应用动态编译 Java 源码并注入 Spring 容器

    基于接口、抽象类实现不停机动态调整代码的目的,将修改后的源码文件放置于指定目录下,读取文件后执行动态编译方法,即可将该类重新加载,新的类可以在Spring容器从新注册,且仅在当前窗口生效。如果重启了服务或...

    Spring容器 .ppt

    Spring容器是Spring框架的核心组成部分,它负责管理对象的生命周期和对象之间的依赖关系。Spring容器的主要职责是读取配置元数据,创建和组装Bean,并提供Bean的完整生命周期管理。本篇内容将深入探讨Spring容器的...

    深度解析spring容器管理bean

    "深度解析spring容器管理bean"这一主题,旨在深入理解Spring如何通过反射机制、依赖注入(DI)以及XML或Java配置来实现对Bean的生命周期管理。 首先,Spring容器主要有两种类型:DefaultListableBeanFactory和...

    获取spring容器的方法

    ### 获取Spring容器的方法详解 在Java开发中,Spring框架因其强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect Oriented Programming, AOP)功能而被广泛使用。掌握如何获取Spring容器对于管理和...

    spring容器简单实例

    本实例将带你深入理解Spring容器的基本使用,通过实际操作来帮助你快速上手。 1. **Spring容器概述** Spring容器是Spring框架的核心,负责管理对象的生命周期和依赖关系。主要有两种类型的容器:BeanFactory和...

    Spring 容器后处理器

    BeanFactoryPostProcessor接口是Spring框架提供的一个接口,用于扩展Spring容器的功能。该接口只有一个方法`postProcessBeanFactory`,该方法在容器加载完成之后被调用,可以用来改变容器中的配置或做一些初始化工作...

    spring容器学习笔记

    初始化和销毁方法在 Spring 容器中,我们可以通过配置来指定 Bean 在被创建后或销毁前需要执行的方法。这些方法可以用于执行初始化设置或者清理工作。 3.1. 初始化方法当我们想要在 Bean 创建完成后执行特定的初始...

    获取Spring容器

    ### 获取Spring容器的相关知识点 #### 一、Spring容器简介 Spring框架的核心是其IoC容器,也称为Spring容器。Spring容器负责管理应用对象的生命周期、配置以及装配过程。Spring提供了两种主要类型的容器: 1. **...

    Spring容器中IOC

    Spring容器中IOC Spring容器中IOC(Inverse of Control,控制反转)是Spring框架的核心功能之一。IOC容器是Spring Framework的核心组件之一,负责管理应用程序中的对象实例,控制对象的生命周期,并提供依赖注入的...

    Spring容器研究.pdf

    ### Spring容器研究 #### 一、依赖注入 依赖注入(Dependency Injection, DI)是一种软件设计模式,用于降低组件间的耦合度。通过依赖注入,组件之间的依赖关系可以在运行时由容器来决定,而不是在编译期间硬编码...

    spring 容器.docx

    Spring容器是Spring框架的核心组成部分,它负责管理和控制应用程序中的对象,这些对象被称为Bean。Spring容器主要有两种接口形式:BeanFactory和ApplicationContext,后者是前者的子接口。这两种接口都是用来表示...

    自己实现的简单Spring 容器

    Spring容器是Spring框架的核心组成部分,它负责管理对象的生命周期和对象之间的依赖关系。在这个自己实现的简单Spring容器项目中,我们可以深入理解Spring的核心原理,并学习如何构建一个基础的依赖注入(Dependency...

    Spring通过在classpath自动扫描方式把组件纳入spring容器中管理

    在Spring框架中,自动扫描(Auto-Component Discovery)是一种便捷的方式,它允许开发者无需显式配置每个bean,就能将类路径下(classpath)的特定包及其子包中的组件(即带有特定注解的类)纳入Spring容器进行管理...

    mybatis注册到spring容器代码

    - 使用`PlatformTransactionManager`接口的实现,如`DataSourceTransactionManager`,并将其注册到Spring容器中。 5. **扫描Mapper接口** - 通过`MapperScannerConfigurer`或`@MapperScan`注解,扫描包含MyBatis ...

    Spring源代码解析(一):IOC容器.doc

    在Spring源代码解析的第一部分,我们将聚焦于IOC容器,特别是BeanFactory接口,它是所有Spring容器的基础。 BeanFactory接口是Spring的基石,它定义了基本的容器操作,如获取Bean、检查Bean是否存在、确定Bean的...

Global site tag (gtag.js) - Google Analytics