Spring框架深度学习(1)

Spring IoC容器和bean介绍

本章介绍Spring Framework实现控制反转(IoC)原理。IoC也被称为依赖注入(DI)。它是一个过程,对象通过构造函数参数,工厂方法的参数或在工厂方法构造或返回后在对象实例上设置的属性来定义它们的依赖关系,即它们使用的其他对象。容器在创建bean时会注入这些依赖关系。这个过程基本上是相反的,因此名为Inversion of Control(IoC),通过使用类的直接构造或诸如Service Locator模式之类的机制来控制其依赖关系的实例化或位置的bean本身

org.springframework.beansorg.springframework.context包是Spring框架的IoC容器的基础。该 BeanFactory 接口提供了一种能够管理任何类型对象的高级配置机制。 ApplicationContext 是一个子接口BeanFactory它增加了与Spring的AOP功能更容易的集成; 消息资源处理(用于国际化),事件发布; 和特定于应用层的上下文(例如,WebApplicationContext 用于Web应用程序中)。

简而言之,它BeanFactory提供了配置框架和基本功能,并ApplicationContext增加了更多的企业特定功能。ApplicationContext是一个完整的超集BeanFactory,并在本章中专门用于描述Spring的IoC容器。有关使用BeanFactory而不是ApplicationContext,引用 BeanFactory的更多信息

在Spring中,构成应用程序主干和由Spring IoC 容器管理的对象称为beanbean是一个实例化,组装并由Spring IoC容器管理的对象。否则,bean只是应用程序中众多对象中的一个。Bean和 它们之间依赖关系反映在容器使用配置元数据中。

容器概览

该接口org.springframework.context.ApplicationContext表示Spring IoC容器,并负责实例化,配置和组装上述bean。容器通过读取配置元数据获取有关要实例化,配置和组装的对象的指示信息。配置元数据用XML,Java注释或Java代码表示。它允许您表示组成应用程序的对象以及这些对象之间丰富的相互依赖关系。

ApplicationContextSpring提供了几个接口的实现在独立应用程序中,通常会创建一个ClassPathXmlApplicationContext or 的实例 FileSystemXmlApplicationContext虽然XML是用于定义配置元数据的传统格式,但您可以通过提供少量的XML配置来指示容器使用Java注释或代码作为元数据格式,以声明方式支持这些其他元数据格式。

在大多数应用场景中,显式用户代码不需要实例化Spring IoC容器的一个或多个实例。例如,在Web应用程序场景中,应用程序文件中的简单八行(或多行)样板Web描述符XML web.xml通常就足够了(请参阅Web应用程序的便捷ApplicationContext实例化)。如果您使用的是 Spring工具套件 Eclipse驱动的开发环境,则只需点击几下鼠标或按键即可轻松创建此样板配置。

下图是Spring如何工作的高级视图。您的应用程序类与配置元数据相结合,以便在ApplicationContext创建并初始化之后,您拥有完全配置且可执行的系统或应用程序。

容器魔术
图1. Spring IoC容器
配置元数据

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

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

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

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

  • 基于注释的配置:Spring 2.5引入了对基于注释的配置元数据的支持。

  • 基于Java的配置:从Spring 3.0开始,Spring JavaConfig项目提供的许多功能成为核心Spring框架的一部分。因此,您可以使用Java而不是XML文件来定义应用程序类外部的Bean。要使用这些新功能,请参阅@Configuration@Bean@Import@DependsOn注释。

Spring配置由容器必须管理的至少一个,通常是多个bean定义组成。基于XML的配置元数据将这些bean配置为<bean/>顶层元素内的<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="..." class="...">
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <bean id="..." class="...">
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <!-- more bean definitions go here -->

</beans>

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值