登录

  • 登录
  • 忘记密码?点击找回

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回
毕业论文网 > 外文翻译 > 计算机类 > 计算机科学与技术 > 正文

IoC(控制反转)容器外文翻译资料

 2022-10-26 10:04:20  

6. The IoC container

Part III. Core Technologies

6.1 Introduction to the Spring IoC container and beans

This chapter covers the Spring Framework implementation of the Inversion of Control (IoC) [1] principle. IoC is also known as dependency injection (DI). It is a process whereby objects define their dependencies, that is, the other objects they work with, only through constructor arguments, arguments to a factory method, or properties that are set on the object instance after it is constructed or returned from a factory method. The container then injects those dependencies when it creates the bean. This process is fundamentally the inverse, hence the name Inversion of Control (IoC), of the bean itself controlling the instantiation or location of its dependencies by using direct construction of classes, or a mechanism such as the Service Locator pattern.

The org.springframework.beans and org.springframework.context packages are the basis for Spring Frameworkrsquo;s IoC container. The BeanFactory interface provides an advanced configuration mechanism capable of managing any type of object. ApplicationContext is a sub-interface of BeanFactory. It adds easier integration with Springrsquo;s AOP features; message resource handling (for use in internationalization), event publication; and application-layer specific contexts such as theWebApplicationContext for use in web applications.

In short, the BeanFactory provides the configuration framework and basic functionality, and the ApplicationContext adds more enterprise-specific functionality. TheApplicationContext is a complete superset of the BeanFactory, and is used exclusively in this chapter in descriptions of Springrsquo;s IoC container. For more information on using the BeanFactory instead of the ApplicationContext, refer to Section 6.16, “The BeanFactory”.

In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container. Otherwise, a bean is simply one of many objects in your application. Beans, and the dependencies among them, are reflected in the configuration metadata used by a container.

6.2 Container overview

The interface org.springframework.context.ApplicationContext represents the Spring IoC container and is responsible for instantiating, configuring, and assembling the aforementioned beans. The container gets its instructions on what objects to instantiate, configure, and assemble by reading configuration metadata. The configuration metadata is represented in XML, Java annotations, or Java code. It allows you to express the objects that compose your application and the rich interdependencies between such objects.

Several implementations of the ApplicationContext interface are supplied out-of-the-box with Spring. In standalone applications it is common to create an instance ofClassPathXmlApplicationContext or FileSystemXmlApplicationContext. While XML has been the traditional format for defining configuration metadata you can instruct the container to use Java annotations or code as the metadata format by providing a small amount of XML configuration to declaratively enable support for these additional metadata formats.

In most application scenarios, explicit user code is not required to instantiate one or more instances of a Spring IoC container. For example, in a web application scenario, a simple eight (or so) lines of boilerplate web descriptor XML in the web.xml file of the application will typically suffice (see Section 6.15.4, “Convenient ApplicationContext instantiation for web applications”). If you are using the Spring Tool Suite Eclipse-powered development environment this boilerplate configuration can be easily created with few mouse clicks or keystrokes.

The following diagram is a high-level view of how Spring works. Your application classes are combined with configuration metadata so that after the ApplicationContext is created and initialized, you have a fully configured and executable system or application.

Figure 6.1. The Spring IoC container

6.2.1 Configuration metadata

As the preceding diagram shows, the Spring IoC container consumes a form of configuration metadata; this configuration metadata represents how you as an application developer tell the Spring container to instantiate, configure, and assemble the objects in your application.

Configuration metadata is traditionally s

剩余内容已隐藏,支付完成后下载完整资料


6. IoC(控制反转)容器

6.1. IOC容器和bean的简介

本章涵盖了Spring框架的对实现控制反转(IoC)的原则。IOC也被称为依赖注入(DI)。过程对象定义它们的依赖关系,也就是说,他们使用的其它对象,只能通过构造函数参数,参数工厂方法或对象实例上设置的属性构造或从工厂回来后的方法。然后容器注入这些依赖项时创建bean。这个过程从根本上是相反,因此得名“控制反转(IoC),控制实例化bean本身或者它的位置依赖关系通过使用直接建设类,或者一个Service Locator模式等机制。

org.springframework.beans和org.springframework.context包是Spring框架的基础的IoC容器。BeanFactory接口提供了一个先进的配置机制能够管理任何类型的对象。ApplicationContext是一个BeanFactory的界面。它增加了更容易集成Spring AOP的功能;信息资源处理(用于国际化),事件发布;和应用程序层特定上下文如theWebApplicationContext用在web应用程序. .

简而言之,BeanFactory提供了配制框架及基本功能,而 ApplicationContext 则增加了更多支持企业核心内容的功能。 ApplicationContext完全由BeanFactory扩展而来,因而BeanFactory所具备的能力和行为也适用于ApplicationContext。本章分为两部份,第一部份讲解BeanFactory及ApplicationContext的基本原理,而第二部份则针对ApplicationContext的功能进行讲解。

在Spring中,那些组成你应用程序的主体(backbone)及由Spring IoC容器所管理的对象,被称之为bean。 简单地讲,bean就是由Spring容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。 而bean定义以及bean相互间的依赖关系将通过配置元数据来描述。

6.2. 容器概述

org.springframework.context.ApplicationContext接口代表了Spring IoC容器和负责实例化、配置和组装上述bean。容器的职能包括对象实例化,配置和组装通过读取配置元数据。配置元数据用XML表示,Java注释,或Java代码。它允许你表达的对象组成应用程序和丰富这些对象之间的相互依赖关系。

几个ApplicationContext接口的实现提供spring的解决方案。在独立的应用程序通常创建一个ClassPathXmlApplicationContext或FileSystemXmlApplicationContext实例。尽管XML的传统格式定义配置元数据指示容器可以使用Java注释或代码的元数据格式,提供少量的XML配置进行声明式的支持这些额外的元数据格式。

Spring为我们提供了许多易用的BeanFactory实现, XmlBeanFactory就是最常用的一个。该实现将以XML方式描述组成应用的对象 以及对象间的依赖关系。XmlBeanFactory类将获取此XML配 置元数据,并用它来构建一个完全可配置的系统或应用。

在大多数应用程序场景中,明确用户代码不需要实例化一个或多个实例的Spring IoC容器。例如,在web应用程序中,我们只需要在web.xml中添加大约8行简单的XML描述符即可。如果你是使用Spring开发环境工具套件Eclipse-powered这个模板配置可以很容易地创建几个鼠标点击或者键盘输入。

下图是一个高级的spring程序是如何工作的。应用程序类是结合配置元数据在ApplicationContext创建并初始化后,你有一个完全配置和可执行的系统或应用程序。

图6.1. Spring IoC容器

6.2.1. 配置元数据

从上图可以看到,Spring IoC容器将读取配置元数据; 并通过它对应用中各个对象进行实例化、配置以及组装。通常情况下我们使用简单直观 的XML来作为配置元数据的描述格式。在XML配置元数据中我们可以对那些我们希望通过 Spring IoC容器管理的bean进行定义。

配置元数据通常是提供一个简单而直观的XML格式,这是大多数本章使用转达Spring IoC容器的关键概念和功能。

Note:

基于xml的元数据并不是唯一允许的配置元数据形式,Spring IoC容器本身是完全脱离这个配置元数据的格式写的。到现在为止,许多开发人员选择Java-based configuration配置他们的Spring应用程序。

想看使用其他形式的元数据与Spring容器的信息,见:

基于注解的配置:Spring 2.5引入了支持基于注解配置元数据。
基于java的配置:从Spring 3.0开始,Spring JavaConfig项目提供的许多特性成为Spring框架的核心的一部分。因此您可以定义bean通过使用Java应用程序类,而不是外部XML文件使用这些新特性,看到@ configuration,@ bean,@ import and@DependsOn注释。

Spring配置通常包含至少一个和多个容器必须管理的bean定义。基于xml的配置元数据显示这些bean配置为lt; bean / gt;元素在一个顶级lt; bean / gt;元素。Java配置通常用@ bean注释的方法在@Configuration类中。

这些bean定义对应于实际的应用程序对象组成。通常你定义服务层对象,数据访问对象(dao),表示对象(如Struts Action实例,基础设施如Hibernate sessionfactory对象、JMS队列,等等。通常不配置相同域对象的容器,因为它通常是DAOs的责任和业务逻辑创建和加载域对象。不过,您可以使用Spring的集成与AspectJ配置对象,IoC容器的控制之外创建的。看到使用AspectJ和Spring依赖注入的域对象。

下面的例子显示了基于xml的配置元数据的基本结构:

lt;?xml version='1.0' encoding='UTF-8'?gt;

lt;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'gt;

lt;bean id='...' class='...'gt;

lt;!-- collaborators and configuration for this bean go here --gt;

lt;/beangt;

lt;bean id='...' class='...'gt;

lt;!-- collaborators and configuration for this bean go here --gt;

lt;/beangt;

lt;!-- more bean definitions go here --gt;

lt;/beansgt;

id属性是一个字符串,用于识别个人的bean定义。class属性定义bean的类型和使用完全限定类名。id属性的值是指合作对象。指合作对象的XML,并不是这个示例中所示;有关更多信息,请参见附件。

6.2.2. 实例化容器

Spring的IoC容器实例化很简单。位置路径或路径提供给一个ApplicationContext构造函数实际上是资源字符串,使容器加载配置元数据等各种各样的外部资源的本地文件系统,从Java类路径,等等。

ApplicationContext context =

new ClassPathXmlApplicationContext(new String[] {'services.xml', 'daos.xml'});

Note:

了解Spring的IoC容器后,您可能想要知道更多关于春天的资源抽象,如第七章所述,资源,它提供了一种方便的机制,从阅读InputStream位置中定义的URI语法。特别是,资源路径用于构建应用程序上下文如7.7节所述,“应用程序上下文和资源路径”。

下面的例子显示了服务层对象(services . xml)配置文件:

lt;?xml version='1.0' encoding='UTF-8'?gt;

lt;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'gt;

lt;!-- services --gt;

lt;bean id='petStore' class='org.springframework.samples.jpetstore.services.PetStoreServiceImpl'gt;

lt;property name='accountDao' ref='accountDao'/gt;

lt;property name='itemDao' ref='itemDao'/gt;

lt;!-- additional collaborators and configuration for this bean go here --gt;

lt;/beangt;

lt;!-- more bean definitions for services go here --gt;

lt;/beansgt;

下面的例子显示了数据访问对象daos.xml文件:

lt;?xml version='1.0' encoding='UTF-8'?gt;

lt;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'gt;

lt;bean id='accountDao'

class='org.springframework.samples.jpetstore.dao.jpa.JpaAccountDao'gt;

lt;!-- additional collaborators and configuration for this bean go here --gt;

lt;/beangt;

lt;bean id='itemDao' class='org.springframework.samples.jpetstore.dao.jpa.JpaItemDao'gt;

lt;!-- additional collaborators and configuration for this bean go here --gt; 剩余内容已隐藏,支付完成后下载完整资料


资料编号:[154003],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

企业微信

Copyright © 2010-2022 毕业论文网 站点地图