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在此示例中未显示; 有关详细信息,请参阅 依赖关系。
相关文章推荐
- [置顶] Spring IoC容器之---通过实例理解什么是IoC
- 【Spring】初始化Spring IoC容器(非Web应用),并获取Bean
- spring ioc容器注入的集中方式,以及属性注入的集中依赖,继承,使用SPEL表达式,ioc容器的生命周期,bean的几种工厂方法配置方式,bean的自动装配
- Spring IOC 容器详解
- 什么是Spring IOC 容器?
- Spring IOC容器-注解的方式【更简化】
- spring IOC容器实例化Bean的方式与RequestContextListener应用
- Spring IOC 容器源码分析 - 循环依赖的解决办法
- Spring IOC容器初始化底层代码分析
- SSH中.动态获取spring IoC容器中管理的bean,dao
- 什么是Spring IOC 容器?
- Spring IOC容器基本原理
- 什么是Spring IOC 容器?
- Spring IoC容器初的初始化过程
- Java - 如何在Spring IoC容器中配置数据源?
- SSH:通过注解(Annotation)的方式在Spring IoC容器中注入依赖
- 自己实现Spring IoC容器(一)概述
- Spring容器框架、spring ioc、两种注入方法set注入与构造器注入
- 什么是Spring IOC 容器?
- 深入理解Spring IOC,实现简单IOC容器