您的位置:首页 > 编程语言 > Java开发

Spring IoC容器(一)

2017-08-16 17:22 246 查看

前言:

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

一、简介Spring IoC容器和bean:

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

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

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

,在
org.springframework.beans
org.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
实例),基础架构对象(如Hibernate
SessionFactories
,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在此示例中未显示; 有关详细信息,请参阅 依赖关系
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: