栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring中IoC和DI

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring中IoC和DI

Author:老九
计算机专业
可控之事 沉重冷静 不可控之事 乐观面对
85180586@qq.com
         ☺️  

      ❓  ❤️ ☕️       ❗️ 
————————————————
版权声明:本文为CSDN博主「浦上青天」的原创文章

文章目录
  • Springboot的优点
  • Spring是什么?
    • 什么是容器?
    • 什么是IoC?
      • 传统开发代码
      • IoC代码
      • IoC优点
    • DI是什么?
  • IoC和DI的关系

知识点

Springboot的优点
  1. 无需配置Tomcat,点击运行按钮就可以运行项目,Boot内置了Web容器
  2. 快速添加外部jar包
  3. 快速发布项目
  4. 对象自动装装配
Spring是什么?
  • Spring是SpringFramework的一个简称,Spring是包含了众多工具方法的IOC容器,说的就是对象的创 和销毁的权力都交给Spring来管理。它本身又具备了存储对象和获取对象的能力
什么是容器?
  • List/Map就是数据存储数据
  • Tomcat是Web容器(所有基于HTTP协议,反映到后端,能做出响应反馈的东西)
  • Spring的容器(Spring的最核心的功能):1.将对象存入到容器2.从容器中取出对象
什么是IoC?
  • IoC=inversion of control,翻译的意思是控制反转,控制的是程序中一个一个的类,反转是类的声明周期不由开发者来控制了,而是交给SpringIoc容器来控制
传统开发代码

假如我们现在要造一辆车
汽车依赖车身(整个车骨),车身依赖底盘,底盘依赖轮胎
传统的程序开发

public class CarDemo {
    public static void main(String[] args) {
        //创建一辆车并启动
        Car car = new Car();
        car.run();
    }

    static class Car{
        public void run(){
            //依赖车身
            Framework framework = new Framework();
            framework.init();
        }
    }

    static class Framework{
        public void init() {
            Bottom bottom = new Bottom();
            bottom.init();
        }
    }

    static class Bottom{
        public void init() {
            Tire tire = new Tire();
            tire.init();
        }
    }

    static class Tire{
        private int size = 15;
        public void init() {
            System.out.println("轮胎尺寸"+size);
        }
    }


}

  • 但传统开发的问题:个性化需求的诞生,人们需要不同尺寸轮胎的车,所以我们需要先改造轮胎类,但改造轮胎类的时候,它的上层依赖类就会报错,因此,传统开发当底层的类被修改时,那么整个调用类的所有类都需要被修改,此现象就叫做代码的耦合问题
IoC代码


public class IoCCarDemo {
    public static void main(String[] args) {
        Tire tire = new Tire(115,"hongse");
        Bottom bottom = new Bottom(tire);
        Framework framework = new Framework(bottom);
        Car car = new Car(framework);
        car.init();
    }

    static class Car{
        private Framework framework;
        public Car(Framework framework){
            this.framework = framework;
        }

        public void init(){
            framework.init();
        }
    }

    static class Framework{
        private Bottom bottom;
        public Framework(Bottom bottom){
            this.bottom = bottom;
        }
        public void init(){
            bottom.init();
        }

    }

    static class Bottom{
        //接收注入的轮胎对象
        private  Tire tire;

        public Bottom(Tire tire){
            //注入下层依赖对象
            this.tire = tire;
        }


        public void init(){
            tire.init();
        }
    }


    static class Tire{
        private int size;
        private  String color;
        public Tire(int size,String color){
            // 实现了尺寸的自定义
            this.size = size;
            this.color = color;
        }
        public void init(){
            System.out.println("轮胎尺寸:"+size);
            System.out.println("轮胎颜色:"+color);
        }

    }
}

IoC创建类的顺序:Tire(轮胎)->Bottom(底盘)->Framework(车身)->Car

IoC优点

相比于传统开发

  • 创建类的顺序发生了改变(反转)
  • 底层调用类发生改变后,IoC模式整个调用链上的代码是无需修改的,实现了类与引用类的解耦
  • 之前如果要使用依赖类,需要自己创建并管理类的生命周期,IoC无需自己管理对象的生命周期
DI是什么?
  • DI是Dependency Injection的缩写,依赖注入 的意思
  • 依赖注入是一种具体的实现技术,在IoC容器启动的时候,动态将对象注册到容器中的一种手段,在具体的情景中,在创建当前类的时候,动态的将当前类的依赖对象注入进来的过程就是依赖注入
IoC和DI的关系
  • IoC是控制反转,它是一种设计思想。DI是控制反转,它是具体的实现手段。

先赞后看,养成习惯!!!^ _ ^♥♥♥
每天都更新知识点哦!!!
码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘记关注我哦!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/927245.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号