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

Spring容器详解(转)

阅读更多
我们在使用ssh整合项目的时候,Spring在其中是一个非常重要的框架,它在其中可以说是一个最核心的框架,提到spring我们不得不提它的IOC容器的功能了!它是一个大工厂,可以在其中产生和管理很多的bean,下面,请随阿堂一起来好好看看spring的容器功能方面的介绍,这对于我们在解决ssh框架整合中的问题,进行测试时是非常有用的!

1.spring容器
     Spring有两个核心接口BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口,它们代表了Spring容器,Spring容器是产生Bean的工厂,用于管理容器中的Bean。Bean是Spring管理的基本单位,在spring的J2EE应用中,所有的组件都是Bean。Bean包括数据源、Hibernate的SessionFactory、事务管理器等。

     应用中的所有组件,都处于spring的管理下,都被spring以Bean的方式管理,spring负责创建Bean实例,并管理其生命周期。Spring里的Bean是非常广义的概念,任何Java对象和Java组件都被当成Bean处理,甚至这些组件,并不是标准的JAVABEAN。
     Bean在spring容器中运行,无须感受Spring容器的存在,一样可以接受spring的信赖注入,包括Bean属性的注入、合作者的注入、信赖关系的注入等。
spring容器负责创建Bean实例,所以需要知道每个Bean的实现类,JAVA程序的实现面向接口编程,无须关心Bean实例的实现。但Spring容器必须能精确知道每个Bean的实现类,因此Spring配置文件必须精确配置Bean的实现类。



    Spring容器最基本的接口就是BeanFactory. BeanFactory负责配置、创建、管理Bean,它有一个子接口ApplicationContext,因此也称为Spring上下文。Spring容器负责管理Bean与Bean之间的信赖关系。

BeanFactory接口包含如下基本的方法:
public boolean containsBean(String name),判断Spring容器是否包含id为name的Bean定义
public Object getBean(String name)返回容器id为name的bean
public Object getBean(String name,Class requiredType)返回容器中id为name,并且类型为requiredType的Bean
public Class getType(String name)返回容器中id为name的Bean的类型

    调用者只需使用getBean方法即可获得指定Bean的引用,无须关心Bean的实例化过程,即Bean实例的创建过程完全透明。

    BeanFactory有很多实现类,通常使用org.springframework.beans.factory.xml.XmlBeanFactory类。但对于大部分J2EE应用而言,推荐使用ApplicationContext. ApplicationContext是BeanFactory的子接口,其常用实现类是

org.springframework.context.support.FileSystemXmlApplicationContext和

org.springframework.context.support.ClassXmlAplicationContext.

     创建 BeanFactory实例时,必须提供Spring容器管理的Bean的详细配置信息。 Springr的配置信息通常采用XML配置文件来设置,因此,创建BeanFactory实例时,应该提供XML配置文件作为参数。 XML配置文件通常使用Resource对象传入



Resource接口用于访问配置文件资源
     大部分j2ee应用,可在启动web应用时自动加载ApplicationContext实例,接受Spring管理的Bean无须知道ApplicationContext的存在,一样可以利用ApplicationContext的管理。

对于独立的应用程序,也可以通过如下方法来实例化BeanFactory



//搜索当前文件路径下的beans.xml文件创建Resource对象
InputStreamResource isr=new FileSystemResource(is);
//以Resource对象作为参数,创建BeanFactory的实例
XmlBeanFactory factory=new XmlBeanFactory(isr);



或者采用如下方法


//搜索CLASSPATH路径,以CLASSPATH路径下的beans.xml文件创建Resource对象
ClassPathResource res=new ClassPathResource("beans.xml");
//以Resource 对象作为参数,创建BeanFactory实例
XmlBeanFactory factory=new XmlBeanFactory(res);



     如果应用里有多个属性配置文件,则应该采用BeanFactory的子接口ApplicationContext来创建BeanFactory的实例,ApplicationContext通常采用如下两个实现类。

FileSystemXmlApplicationContext ,以指定路径的XML配置文件创建ApplicationContext
ClassPathXmlApplicationContext,以CLASSPATH路径下的XML配置文件创建ApplicationContext



如果需要同时加载多个XML配置文件,可以采用如下方式

//搜索CLASSPATH路径,以CLASSPATH路径下的applicationContext.xml 和 service.xml文件创建ApplicationContext
ClassPathXmlApplicationContext appContext=new ClassPathXmlApplicationContext(
new String[] {"applicationContext.xml","service.xml"});

//事实上,ApplicationContext是BeanFactory的子接口,支持强制类型转换
BeanFactory factory=(BeanFactory) appContext;



当然,也可以支持从指定的路径来搜索特定文件加载:


//以指定路径下的applicationContext.xml和service.xml文件创建 Applicationcontext
FileSystemXmlAplicationContext appContext=new
FileSystemXmlApolicationContext(
new String[] {"applicationContext.xml","service.xml"}
)
//事实上,ApplicationContext是BeanFactory的子接口,支持强制类型转换
BeanFactory factory=(BeanFactory) appContext;


2.使用ApplicationContext
    很多时候,并不是直接使用BeanFactory实例作为Spring容器,而是使用ApplicationContext实例。因此,有时候也称Spring容器为Spring上下文。 ApplicationContext是BeanFactory接口的子接口,它增强了BeanFactory的功能。
    ApplicationContext允许以声明方式操作容器,无须手动创建它。可利用如ContextLoader的支持类,在web应用启动自动创建ApplicationContext。当然,也可以采用编程方式创建ApplicationContext



ApplicationContext继承MessageSource接口,因此提供国际化支持资源访问,比如 URL和文件
事件传递
载入多个配置文件
    ApplicationContext包括  BeanFactory的全部功能,因此建议优先使用ApplicationContext ,除了对于某些内存非常关键的作用,才考虑使用BeanFactory
分享到:
评论

相关推荐

    Spring 容器后处理器

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

    获取spring容器的方法

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

    spring架构详解 spring架构详解

    它包含了BeanFactory接口,它是Spring容器的基石,负责管理和实例化对象。 - **Context组件**:构建在Core组件之上,提供了更丰富的上下文环境,能够处理更复杂的对象关系和应用程序服务。ApplicationContext接口...

    spring内核详解

    Bean工厂是Spring容器的基础,它负责创建、配置和管理Bean。Bean工厂通过读取XML或Java配置,实例化Bean并根据配置进行初始化。开发者可以通过实现ApplicationContext接口获取更高级别的容器,提供事件发布、资源...

    spring框架容器详解

    主要介绍spring的IOC、AOP特性以及与其他框架的整合

    详解spring boot容器加载完后执行特定操作

    "Spring Boot 容器加载完成后执行特定操作" Spring Boot 框架提供了多种方式来执行容器加载完成后的特定操作,例如使用 ApplicationListener 接口或使用 @PostConstruct 注解。在本文中,我们将介绍使用 ...

    spring技术详解

    下面将详细介绍Spring技术的基本用法、核心机制、依赖注入、Spring容器和被管理的Bean等知识点。 一、Spring的基本用法 Spring容器是Spring的核心,该容器负责管理Spring中的Java组件。 Spring容器有多种实现类,...

    Spring Boot详解

    - 编写SpringConfig,定义为@Configuration,其中包含@Bean注解的方法,如@Bean UserDAO(),用于在Spring容器中实例化bean。 - 编写测试方法,通过ApplicationContext获取Spring容器,然后获取并使用UserService...

    spring详细教程

    ### Spring 框架详解 #### 一、Spring 概述及特点 ##### 1.1 Spring 框架简介 - **Spring** 是一款开源的轻量级 Java 应用框架,主要用于简化企业级应用的开发过程。它提供了一个全面的编程模型,帮助开发者更加...

    spring配置文件详解

    Spring 配置文件详解 Spring 配置文件是 Spring 框架中最重要的配置文件之一,它负责定义和配置应用程序的Bean对象,以及它们之间的依赖关系。Spring 配置文件通常以XML文件的形式存在,文件名通常为...

    spring3注解详解

    17. `@Bean`:用于标记方法,声明该方法将生成一个Bean并将其注册到Spring容器中。 以上是Spring 3.0中的一些核心注解,它们极大地提高了开发效率和代码可读性。理解并熟练使用这些注解,能让你在Spring框架的开发...

    spring所有配置文件详解

    `applicationContext.xml`是Spring容器使用的主配置文件之一,用于定义Spring中的Bean以及它们之间的依赖关系。 #### 三、applicationContext.xml详解 **1. 文件结构** ```xml <!-- 头文件,定义XML版本及编码 --...

    详解Spring IOC 容器启动流程分析

    Spring IOC 容器启动流程分析 Spring IOC 容器是 Java 企业级应用程序的核心组件之一,它提供了一个统一的依赖注入机制,使得应用程序的组件之间能够松耦合。Spring IOC 容器的启动流程是整个 Spring 框架的核心...

    spring框架技术详解及使用指导(电子书PDF)

    在阅读“spring框架技术详解及使用指导”时,你可能会学到如何配置Spring IoC容器,如何使用注解进行依赖注入,如何编写AOP切面,以及如何利用Spring MVC构建RESTful Web服务。此外,书中可能还会涵盖Spring Boot的...

    spring jar 包详解

    如果只需要使用 Spring 的 IoC/DI 容器特性,则只需引入 `spring-core.jar` 和 `spring-beans.jar`。对于那些对发布的大小有严格要求的情况,可以通过精细地挑选所需的 Jar 包来减小程序包的大小,避免包含不必要的...

    spring 详解 配置详解

    Spring 框架详解与配置指南 Spring 是一个开源的 Java 应用程序框架,它以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)为核心,为开发人员提供了丰富的功能,简化了...

Global site tag (gtag.js) - Google Analytics