Spring--两大核心之一--IOC

简介: Spring--两大核心之一--IOC

一 Spring  IOC 简介:

       ①IOC: 全称 Inversion of Contral 翻译过来就是 "反转控制"

在之前我们使用mybatis的时候, 我们需要从dom --> service -->contraller三个层面一个一个进行书写, 显然各个过程都需要我们进行参加, 书写, 并且我们必须了解这整个过程当中的细节点, 并且掌握


       但是~~~


       在Spring当中 我们就可以使用 "反转控制" 从而大大简化我们的操作, 反转指的其实是操作对象的反转 ,在之前获取资源的时候, 需要我们本身去将各种资源交给组件, 也就是 主动 的输入, IOC则完全将其颠覆了, 我们变成了坐享其成的 "被动". 改变为容器主动的将资源推送给需要的组件, 开发人员也不需要直到容器是如何进行创建的, 只管接收即可, 提高了开发效率

  ②DI

       DI: Dependency Injection  翻译过来就是依赖注入

DI是IOC的另一种表达方式, DI的理解相比于IOC来说更加简单, 依旧举例我们的三大框架 contraller --> service -->dom


很显然, 在这个过程当中, 我们的contraller是依赖于service进行实现的, 但在DI当中, 我们会用组件预先设定好的一些方法, 比如(getter and setter) 接受来自于容器的注入, 也就是contraller注入到service当中, 我们也就不需要自己手动输入了, 倒反天罡


       总的来说, IOC其实就是一种反转控制的思想, DI则是IOC的一种具体的实现, 我们可以通过DI来实现IOC


二 IOC容器在Spring的实现:

               IOC这种"反转控制"的思想, 实际上是需要一个IOC容器去实现的, 这个容器也就是IOC思想成功的一个实现

     IOC容器当中 , 其管理的组件叫做bean,  那么在创建bean之前, 我们首先需要创建一个IOC的容器, 之后bean才能对其进行管理, 在这里Spring也提供了两种的实现方式

 1>容器的两种实现方式

       ①BeanFactory

 这是最基本的容器实现方式, 但是需要注意的一点是, 这种方式仅仅只面向Spring本身, 是不提供给开发人员进行使用的


②ApplicationContext


       面向Spring开发人员使用的, 并且是基于BeanFactory进行实现的, 是其子接口, 作为子接口, 自然也提供了更多的方法, 高级特性 如图

       2>ApplicationContext的主要实现类

       在ApplicationContext当中也有许多的接口, 类, 如图

  在最下面的实现类当中, 我们发现两种实现方式

       ①FileSystemXmlApplicationContext

       可以搜索磁盘, 通过对应的系统路径读取XML文件, 从而创建IOC的容器对象

        ②ClassPathXmlApplicationContext

       搜索当前工程下的XML格式的配置文件来创建对应的IOC容器对象

  很明显, 第一种方式有一个致命的缺点, 那就是, 如果我们更换使用装置, 电脑之后, 无法保证另外一个电脑上, 对应的磁盘也有相应的XML类型的配置文件, 所以我们一般都是用第二种方式, 从而避免在不同的设备上对应路径当中没有配置文件


三 入门案例:

       1>导入依赖

 <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.1</version>
        </dependency>
<!--        引入测试类-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
            <scope>test</scope>
        </dependency>
 
    </dependencies>

 2>书写一个简单的类

3>设置Spring IOC的核心XML配置文件(如图所示)

 4>配置bean

       在IOC容器准备完成之后, 我们开始配置在XML当中对应的bean

<!--bean标签
    将对象交给IOC对象容器进行管理
    几个属性:
        ID 用来作为对象的唯一标识
        Class设置BEAN对象所对应的对象 后面需要加上全类名
-->
    <bean id="helloword" class="com.itguigu.spring.pojo.Helloword"></bean>

 5>书写测试类

    @Test
    public void test1(){
//        第一步, 我们需要先获取对应的IOC容器
//        实现BEAN的接口实际上是有两个的, 但是第一个BeanFactory对应的是开发人员所使用的
//        另外的一个ApplicationContext才是我们开发人员应该使用的
//        并且在向上进行转型的时候, 我们需要考虑到, 应当是根据当前程序的路径获取的, 而不是根据磁盘路径获取,
//        因为根据磁盘获取的话, 可能会造成换设备, 对应的磁盘上并没有相应的文件
        ApplicationContext ioc=new ClassPathXmlApplicationContext("applicationContext.xml");
//输入唯一标识
        Helloword helloword = (Helloword) ioc.getBean("helloword");
//        调用Helloword当中的一些方法
        helloword.sayHello();
    }

 

 结果:


                                                               感谢观看OVER!

相关文章
|
3月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
12天前
|
XML 缓存 Java
搞透 IOC、Spring IOC ,看这篇就够了!
本文详细解析了Spring框架的核心内容——IOC(控制反转)及其依赖注入(DI)的实现原理,帮助读者理解如何通过IOC实现组件解耦,提高程序的灵活性和可维护性。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
4天前
|
安全 Java 测试技术
Java开发必读,谈谈对Spring IOC与AOP的理解
Spring的IOC和AOP机制通过依赖注入和横切关注点的分离,大大提高了代码的模块化和可维护性。IOC使得对象的创建和管理变得灵活可控,降低了对象之间的耦合度;AOP则通过动态代理机制实现了横切关注点的集中管理,减少了重复代码。理解和掌握这两个核心概念,是高效使用Spring框架的关键。希望本文对你深入理解Spring的IOC和AOP有所帮助。
8 0
|
2月前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
200 18
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
|
2月前
|
XML Java 测试技术
spring复习01,IOC的思想和第一个spring程序helloWorld
Spring框架中IOC(控制反转)的思想和实现,通过一个简单的例子展示了如何通过IOC容器管理对象依赖,从而提高代码的灵活性和可维护性。
spring复习01,IOC的思想和第一个spring程序helloWorld
|
1月前
|
Java Spring 容器
Spring IOC、AOP与事务管理底层原理及源码解析
【10月更文挑战第1天】Spring框架以其强大的控制反转(IOC)和面向切面编程(AOP)功能,成为Java企业级开发中的首选框架。本文将深入探讨Spring IOC和AOP的底层原理,并通过源码解析来揭示其实现机制。同时,我们还将探讨Spring事务管理的核心原理,并给出相应的源码示例。
121 9
|
1月前
|
存储 开发框架 Java
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
文章详细介绍了Spring、IOC、DI的概念和关系,解释了控制反转(IOC)和依赖注入(DI)的原理,并提供了IOC的代码示例,阐述了Spring框架作为IOC容器的应用。
26 0
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
|
2月前
|
缓存 Java Spring
手写Spring Ioc 循环依赖底层源码剖析
在Spring框架中,IoC(控制反转)是一个核心特性,它通过依赖注入(DI)实现了对象间的解耦。然而,在实际开发中,循环依赖是一个常见的问题。
40 4
|
24天前
|
XML Java 数据格式
Spring IOC容器的深度解析及实战应用
【10月更文挑战第14天】在软件工程中,随着系统规模的扩大,对象间的依赖关系变得越来越复杂,这导致了系统的高耦合度,增加了开发和维护的难度。为解决这一问题,Michael Mattson在1996年提出了IOC(Inversion of Control,控制反转)理论,旨在降低对象间的耦合度,提高系统的灵活性和可维护性。Spring框架正是基于这一理论,通过IOC容器实现了对象间的依赖注入和生命周期管理。
61 0
|
2月前
|
XML Java 开发者
经典面试---spring IOC容器的核心实现原理
作为一名拥有十年研发经验的工程师,对Spring框架尤其是其IOC(Inversion of Control,控制反转)容器的核心实现原理有着深入的理解。
109 3
下一篇
无影云桌面