`
Yinny
  • 浏览: 295735 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring IoC的架构介绍

 
阅读更多
1、什么是IoC和DI
谈到IoC,开发人员首先想到的一定是Spring IoC,因为用的人实在是太多了,不过今天要讲一下IoC——Inversion of Control,顾名思义就是“控制反转”的意思,是一种思想,不严谨地说也是一种模式,而Spring IoC其实只是IoC的一种具体实现,在Java开发中,IoC意味着将你设计好的对象交给容器控制,而不是传统地在你的对象内部直接控制(包括new创建,工厂创建等等)。
理解了IoC,让我们再分析一下另外一个概念,DI——Dependency Injection,即“依赖注入”,这也是我们经常会提到的概念,为什么提到IoC就一直要提到DI呢,它们是什么关系呢?下面我们先来说说IoC的作用,我们知道在Java开发中我们传统的、最基本的创建对象的方式是用new创建对象,这是一种主动的方式,即调用者需要一个类的实例,就会主动new一个出来,而IoC是依靠容器利用反射创建和查找依赖对象,并将依赖对象注入给调用者的,这也就产生了“依赖注入”这个概念,DI正是IoC最有威力的一部分。因为在一个类内部用new主要创建实例,就会导致类与类之间高耦合,而IoC则解决了这样的问题,便于测试和功能复用,更使得程序的整个体系结构变得非常灵活。
所以可以这么说IoC的核心是DI,而DI最大的优点就是松散耦合,调用者知道太多依赖对象的内容会导致紧密耦合代码,知道越少耦合就越松散,实现松散耦合正是IoC的核心所在。讲完了IoC,让我们看看Spring是如何实现IoC的呢?下面我们就详细了解Spring IoC的整体架构:
2、Spring IoC的架构:
Spring IoC容器主要有两种实现:org.springframework.beans.factory.BeanFactory(Bean工厂)和
org.springframework.contextApplicationContext(应用上下文),其中BeanFactory是Spring IoC最核心的部分,它实现了IoC的基本功能,ApplicationContext接口扩展了BeanFactory,还提供了与Spring AOP集成、国际化处理、资源访问、事件传播以及提供不同层次的context实现,简单地说,ApplicationContext 就是增加了更多支持企业级功能支持,所以现在一般情况下很少用BeanFactory,而是用ApplicationContext了。
我们可以利用Eclipse看一下BeanFactory和ApplicationContext的继承结构:
BeanFactory一共有3个子接口1个实现类,其中实现类SimpleJndiBeanFactory主要是jndi相关的。我们可以从图上的红框看到ApplicationContext其实是HierarchicalBeanFactory接口和ListableBeanFactory接口两个接口的子接口,ListableBeanFactory接口表示这些Bean是可列表的,而HierarchicalBeanFactory表示的是这些Bean是有继承关系的,也就是每个Bean有可能有父Bean。



下面我们再看一下ApplicationContext的向下继承体系结构,红框部分是我们开发中经常会用到的实现:



3、BeanFactory和ApplicationContext的联系和区别
了解了Spring IoC容器的主要架构,对于架构的详细分析我们以后再讲,先来说一下BeanFactory和ApplicationContext的联系和区别:
1、BeanFactory是Spring框架最核心的接口,它提供了高级IoC的配置机制,ApplicationContext建立在BeanFactory的基础之上,提供了更多面向应用的功能,例如提供了国际化支持和框架实践体系,更易于创建实际应用。
2、BeanFactory的实现不能直接使用Resource,而是需要通过IO读取后再调用(例如用BeanDefinitionReader读取),而ApplicationContext的实现已经提供了一系列加载不同Resource的读取器实现,可以直接使用Resource。
3、关于单实例Bean是如何被载入的:BeanFactory延迟载入所有的Bean,直到getBean()方法被调用时Bean才被创建;ApplicationContext则会在上下文启动后预加载所有的单实例Bean。通过预载入单实例Bean,确保当你需要的时候它们已经准备好了,你的应用不需要等待它们被创建。
  • 大小: 63.9 KB
  • 大小: 138.7 KB
分享到:
评论

相关推荐

    springIoc实现原理

    - 控制器层(Controller):在MVC架构中,Spring MVC使用Ioc处理HTTP请求。 总之,Spring Ioc通过控制反转和依赖注入,极大地提高了代码的可维护性和可测试性,降低了系统的复杂度,使得开发人员能够更加专注于业务...

    spring_ioc

    这是spring_ioc部分的内容。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

    spring ioc以及事物架构图

    ### Spring IoC与事务管理架构解析 #### 一、Spring IoC容器的构建与工作原理 **Spring**作为一款轻量级的Java开发框架,在Java企业级应用领域扮演着极其重要的角色。其中,**IoC(Inversion of Control,控制反转...

    Spring IoC源码深度剖析开源架构源码2021.pdf

    标题《Spring IoC源码深度剖析开源架构源码2021.pdf》和描述《Spring IoC源码深度剖析开源架构源码2021.pdf》表明该文档主要面向于分析Spring框架中控制反转(IoC)容器的核心源码,解析和理解其内部的工作机制及...

    spring ioc

    标题 "Spring IOC" 描述了我们讨论的核心主题——Spring 框架中的依赖注入(Inversion of Control,简称 IOC)机制。Spring 是一个广泛应用的 Java 应用开发框架,其核心特性之一就是IOC,它极大地简化了软件组件...

    Spring IOC.pdf

    在Spring中,AOP通常与IoC配合使用,以提供更加灵活和可维护的系统架构。 总结来说,Spring IOC操作和设计模式是Spring框架最核心的部分之一,它们帮助开发者将对象之间的依赖关系交由Spring容器管理,实现了业务...

    Spring Ioc 注解 依赖注入

    ### Spring IoC与注解依赖注入详解 #### 一、Spring框架简介 Spring框架是由Rod Johnson创建的一...以上就是关于Spring IoC容器以及注解依赖注入的相关知识点介绍,希望能够帮助大家更好地理解和掌握这一重要的技术。

    Spring IOC 控制反转

    通过上述介绍,我们可以看出Spring IOC控制反转的核心思想是将对象的创建和管理交给了Spring容器,从而实现了组件间的解耦。这种方式极大地提高了代码的可维护性和扩展性,是现代Java开发中不可或缺的一部分。

    Spring IOC源码解读

    BeanDefinition是Spring中用于描述Bean实例的关键数据结构,包含了Bean的属性、依赖对象、构造器参数等信息。而ApplicationContext则是一种更高级的容器,除了提供BeanFactory的基本功能外,还增加了许多面向框架的...

    实验四_SpringIoC.rar

    1. **创建项目结构**:首先,你需要创建一个Java项目,并引入Spring的相关依赖库,如spring-context。 2. **编写Bean**:定义你要管理的Java类,这些类通常包含一些属性,这些属性可能需要依赖其他类。 3. **配置...

    Spring IoC容器实现的结构分析

    本文将从实现的角度,通过对外部接口、内部实现、组成部分和执行过程四个角度深入剖析Spring IoC容器的结构。 首先,Spring IoC容器的外部接口主要包括`ApplicationContext`和`BeanFactory`。`BeanFactory`是IoC...

    Spring ioc源码解读

    ### Spring IoC源码解读 #### 一、Spring IoC 容器概述 Spring框架的核心功能之一便是依赖注入(Dependency Injection, DI),而这一功能主要通过IoC容器来实现。在Spring框架中,IoC容器负责管理应用对象的生命...

    spring ioc+mvc代码

    Spring MVC是Spring框架提供的Web应用开发模型,它将请求处理逻辑、业务逻辑和视图分离,使代码结构更加清晰。 2.1 请求处理流程 一个典型的Spring MVC请求处理流程包括: - DispatcherServlet捕获请求。 - ...

    Spring IoC简单示例-注解配置-Maven构建

    在项目结构方面,Maven有标准的目录结构,包括`src/main/java`用于存放源代码,`src/main/resources`用于存放配置文件,如Spring的`applicationContext.xml`(如果使用XML配置)或者扫描注解的配置文件。在本例中,...

    SpringIOC示例源代码

    在Spring的XML配置中,你可以看到如下的结构: ```xml <!-- ... --> ``` 这里,`id`是bean的唯一标识,`class`指定bean的实现类,`property`标签用于注入依赖,`ref`引用其他bean的ID。 通过这样的配置,...

    Spring IOC AOP MVC 简单例子

    例如,`SpringIOC`目录中的配置文件(如`applicationContext.xml`)用于定义bean的定义和它们之间的依赖关系。通过XML或注解方式声明bean,Spring可以自动管理bean的实例化、初始化和销毁,从而简化了代码并提高了可...

    Spring IOC架构介绍与源码分析(含插件开发)

    本课程通过UML结合源码进行全局的剖析了Spring_IOC容器的核心原理,以及插件的开发方法,以及插件实例(介绍SpingBoot和Spring定时器扩展原理)。通过本课程的学习您将对Spring_IOC整体架构有清晰的了解,知道5大核心...

    一个简单的模仿spring的ioc实现

    在IT行业中,Spring框架是Java开发中的重要组成部分,特别是其依赖注入(Dependency Injection,简称DI)功能,也称为控制反转(Inversion of Control,IoC)。这个“一个简单的模仿spring的ioc实现”项目旨在帮助...

    Spring IOC设计原理解析.docx

    二、Spring IOC体系结构 Spring的IOC体系主要由BeanFactory和BeanDefinition组成。BeanFactory是Spring容器的基础接口,负责管理和实例化Bean。BeanDefinition则存储了Bean的元数据,如类名、属性、依赖等信息。 三...

Global site tag (gtag.js) - Google Analytics