Spring IoC容器(一)

本文深入探讨Spring框架中的IoC(依赖注入)原理,介绍了Spring IoC容器如何管理bean,包括bean的实例化、配置和依赖关系管理。容器通过XML、Java注解或代码来解析配置元数据,实现对象的创建和组装。此外,文章还概述了不同类型的容器实现和配置元数据的多种形式,如基于XML、注解和Java的配置。
摘要由CSDN通过智能技术生成

前言:

本章涵盖了反向控制(IoC)原理的Spring框架实现。IoC也称为依赖注入(DI)。

一、简介Spring IoC容器和bean:

IoC我们常说是控制反转,IoC也称为依赖注入(DI)。它是一个过程,对象定义它们的依赖关系,也就是他们工作的其他对象

,只有通过构造函数参数,工厂方法的参数,或者在从工厂方法构造或返回后在对象实例上设置的属性。然后,容器 在创建bean时

注入这些依赖项。这个过程基本上是反向的,因此命名控制反转(IoC),它通过使用直接构造类来控制其依赖关系的实例化或位置

,在org.springframework.beansorg.springframework.context包是Spring框架的IoC容器的基础。该 BeanFactory 接

口提供了能够管理任何类型的对象的高级配置机制。 ApplicationContext 是一个子界面BeanFactory。它更容易与Spring的

AOP功能集成; 消息资源处理(用于国际化),事件发布; 以及应用层特定的上下文,例如WebApplicationContext 用于Web应用

程序。简而言之,它BeanFactory提供了配置框架和基本功能,并ApplicationContext增加了更多的企业特定功能。这

ApplicationContext是一个完整的超集BeanFactory,并且在本章中专门用于Spring的IoC容器的描述。有关使用BeanFactory

而不是ApplicationContext,参考 官网第7.16节“BeanFactory”的更多信息。

在Spring中,构成应用程序主干并由Spring IoC 容器管理的对象称为bean。bean是由Spring IoC容器实例化,组装和以其他方

式管理的对象。否则,bean只是应用程序中的许多对象之一。Bean和 它们之间的依赖关系反映在容器使用的配置元数据中。

容器概述:

该接口org.springframework.context.ApplicationContext代表Spring IoC容器,并负责实例化,配置和组装上述bean

。容器通过读取配置元数据获取有关实例化,配置和组合的对象的说明。配置元数据用XML,Java注释或Java代码表示。它允许您

表达组成应用程序的对象以及这些对象之间丰富的相互依赖关系。


ApplicationContext接口的几个实现方式与Spring一起提供。在独立应用程序中,创建一个

ClassPathXmlApplicationContext 或多个实例是常见的FileSystemXmlApplicationContext。虽然XML是用于定义配置

元数据的传统格式,但您可以通过提供少量XML配置来声明性地启用对这些附加元数据格式的支持,来指示容器将Java注释或代

码用作元数据格式。

在大多数应用场景中,显式用户代码不需要实例化一个或多个Spring IoC容器的实例。例如,在Web应用程序场景中,应用程序文

件中简单的八(或更多)样板Web描述符XML行web.xml通常就足够了

(参见官网第7.15.4节“Web应用程序的方便的ApplicationContext实例化”)。如果您正在使用 Spring Tool Suite Eclipse驱动的开发

环境,则可以通过鼠标点击或击键轻松创建该样板设置。

下图是Spring如何工作的高级视图。您的应用程序类与配置元数据相结合,以便在ApplicationContext创建和初始化后,您将具

有完全配置和可执行的系统或应用程序。

如图:Spring IoC容器

容器魔法

二、配置元数据

如上图所示,Spring IoC容器消耗一种配置元数据的形式 ; 此配置元数据表示应用程序开发人员如何告诉Spring容器来实例化,配置和组合应用程序中的对象。

配置元数据传统上以简单直观的XML格式提供,这是本章大部分用于传达Spring IoC容器的关键概念和功能。

基于XML的元数据 不是 唯一允许的配置元数据形式。Spring IoC容器本身与实际写入此配置元数据的格式 完全 分离。这些天,很多开发人员为他们的Spring应用程序选择  基于Java的配置

有关使用Spring容器的其他形式的元数据的信息,请参阅:

  • 基于注释的配置:Spring 2.5引入了支持基于注释的配置元数据。
  • 基于Java的配置:从Spring 3.0开始,Spring JavaConfig项目提供的许多功能成为核心Spring Framework的一部分。因此,您可以使用Java而不是XML文件来定义应用程序类外部的bean。要使用这些新功能,请参阅@Configuration@Bean@Import 和@DependsOn注释。
pring配置由容器必须管理的至少一个和通常多个bean定义组成。基于XML的配置元数据将这些Bean配置为
<bean/>elements inside a top-level<beans/>元素中的元素。Java配置通常@Bean@Configuration类中使用注释方法。

这些bean定义对应于构成应用程序的实际对象。通常,您定义服务层对象,数据访问对象(DAO),呈现对象(如Struts Action实例),基础架构对象(如HibernateSessionFactories,JMS Queues等)。通常,在容器中不配置细粒度的域对象,因为通常由DAO和业务逻辑负责创建和加载域对象。但是,您可以使用Spring与AspectJ的集成来配置在IoC容器的控制之外创建的对象。请参阅使用AspectJ对Spring进行依赖注入域对象

以下示例显示了基于XML的配置元数据的基本结构:

<?xml version =“1.0”encoding =“UTF-8”?> 
<beans  xmlns = “http://www.springframework.org/schema/beans” 
    xmlns:xsi = “http://www.w3.org / 2001 / XMLSchema-instance“ 
    xsi:schemaLocation = ”http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd“ > 

    <bean  id = “......”   = “...” > 
        <! -合作者和配置这个bean去这里- > 
    </bean> 

    <bean  ID = “...”   = “...“ > 
        <! - 这个bean的协作者和配置去这里 - > 
    </ bean> 

    <! - 更多的bean定义到这里 - > 

</ beans>

id属性是用于标识单个bean定义的字符串。该class属性定义bean的类型,并使用完全限定的类名。id属性的值是指协作对象。用于引用协作对象的XML在此示例中未显示; 有关详细信息,请参阅 依赖关系


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值