网站表单及商品列表详情模板,如何做网站的伪静态页面,儋州个人建站哪家好,显示WordPress页面打开时长文章目录 前言一、Spring是什么1.IoC 容器 —— 容器2.IoC 容器 —— IoC传统程序开发控制反转式程序开发 3.Spring IoC 二、DI是什么总结 前言
本人是一个普通程序猿!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果你也对编程感兴趣的话#xff0c;互关一下… 文章目录 前言一、Spring是什么1.IoC 容器 —— 容器2.IoC 容器 —— IoC传统程序开发控制反转式程序开发 3.Spring IoC 二、DI是什么总结 前言
本人是一个普通程序猿!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果你也对编程感兴趣的话互关一下以后互相学习共同进步。这篇文章能够帮助到你的话,劳请大家点赞转发支持一下! 一、Spring是什么
我们通常所说的 Spring 指的是 Spring FrameworkSpring 框架 它是⼀个开源框架。Spring 支持⼴泛的应用场景它可以让 Java 企业级的应用程序开发起来更简单。
用⼀句话概括 SpringSpring 是包含了众多⼯具方法的 IoC 容器 。 1.IoC 容器 —— 容器
容器是⽤来容纳某种物品的基本装置。 书包是用来容纳书本的容器。 水杯是用来容纳水的容器。 衣柜是用来容纳衣服的容器。 所以容器就是用来容纳 / 存储某些东西的 。 像数据结构中的 顺序表链表栈队列二叉树哈希表等结构也是容器 只不过 这些容器存储的是数据 。
而 IoC容器存储的是 “对象” Java中的实例化对象。 2.IoC 容器 —— IoC
IoC Inversion of Control 翻译成中⽂是“控制反转”的意思也就是说 Spring 是⼀个“控制反转”的容器 。 控制反转指的是控制权反转。 Java程序中对象的生命周期 不再由程序猿(代码片段)来控制 而是将 控制权反转 让Spring(Spring容器/IoC容器)来控制 。 假设我们让程序来创建一台电脑。
传统程序开发
电脑(Computer)依赖CPU(Cpu)有CPU才能有电脑。 CPU依赖主板(Mainboard)有主板才能有CPU。 主板依赖电源(Power)有电源才能有主板。
public class Computer {public void init() {// 电脑依赖CPUCpu cpu new Cpu();cpu.init();System.out.println(电脑创建成功);}
}class Cpu {public void init() {// CPU依赖主板Mainboard mainboard new Mainboard();mainboard.init();System.out.println(CPU创建成功);}
}class Mainboard {// 主板依赖电源public void init() {Power power new Power();power.init();System.out.println(主板创建成功);}
}class Power {private int size 800;public void init() {System.out.println(size W电源创建成功);}
}
class Main {public static void main(String[] args) {Computer computer new Computer();computer.init();}
}以上程序中CPU主板电源都是写死的如果客户想要定制假设客户想要定制一个特殊规格的电源。 修改后代码
public class Computer {public void init(int size) {// 电脑依赖CPUCpu cpu new Cpu();cpu.init(size);System.out.println(电脑创建成功);}
}class Cpu {public void init(int size) {// CPU依赖主板Mainboard mainboard new Mainboard();mainboard.init(size);System.out.println(CPU创建成功);}
}class Mainboard {// 主板依赖电源public void init(int size) {Power power new Power(size);power.init();System.out.println(主板创建成功);}
}class Power {private int size;public Power(int size) {this.size size;}public void init() {System.out.println(size W电源创建成功);}
}class Main {public static void main(String[] args) {Computer computer new Computer();computer.init(1200);}
}这样的传统开发代码耦合程度很高当最底层代码改动之后整个调用链上的所有代码都需要修改。 控制反转式程序开发
我们可以尝试 不在每个类中自己创建下级类 如果自己创建下级类就会出现当下级类发⽣改变操作自己也要跟着修改。此时我们只需要 将原来由自己创建的下级类改为传递的⽅式也就是注⼊的⽅式 因为我们不需要在当前类中创建下级类了所以下级类即使发生变化创建或减少参数当前类本身也无需修改任何代码这样就完成了程序的解耦。
基于以上思路我们把调用汽车的程序示例改造⼀下把创建子类的方式改为注入传递的方式具体实现代码如下
public class Computer {private Cpu cpu;public Computer(Cpu cpu) {this.cpu cpu;}public void init() {// 电脑依赖CPUcpu.init();System.out.println(电脑创建成功);}
}class Cpu {private Mainboard mainboard;public Cpu(Mainboard mainboard) {this.mainboard mainboard;}public void init() {// CPU依赖主板mainboard.init();System.out.println(CPU创建成功);}
}class Mainboard {// 主板依赖电源private Power power;public Mainboard(Power power) {this.power power;}public void init() {power.init();System.out.println(主板创建成功);}
}class Power {private int size;public Power(int size) {this.size size;}public void init() {System.out.println(size W电源创建成功);}
}class MyContainer {public Power power;public Mainboard mainboard;public Cpu cpu;public Computer computer;public MyContainer() {this.power new Power(1200);this.mainboard new Mainboard(power);this.cpu new Cpu(mainboard);this.computer new Computer(cpu);}public Computer getComputer() {return computer;}
}class Main {public static void main(String[] args) {MyContainer mycontainer new MyContainer();mycontainer.getComputer().init();}
}我们可以看到传统程序开发中 由最高级的类依次创建了需要的类。
而改进之后的 控制权反转 我们把控制权交给了容器Mycontainer后 不再是上级对象创建并控制下级对象了 ⽽是下级对象把注⼊将当前对象中 下级的控制权不再由上级类控制了这样即使下级类发⽣任何改变当前类都是不受影响的 这就是典型的控制反转也就是 IoC 的实现思想 。
代码经过以上调整无论底层类如何变化整个调用链是不用做任何改变的这样就完成了代码之间的解耦从而实现了更加灵活、通用的程序设计了。 3.Spring IoC
文章开头提到过Spring 是包含了多个⼯具方法的 IoC 容器这就是对Spring 最核心的总结。
Spring 是⼀个 IoC(控制反转) 容器 IoC 代表的是对象的创建和销毁的权利都交给 Spring 来管理了 。
Spring 是⼀个 IoC容器 “容器”二字代表的是它具备两个最基础的功能
将对象存入到容器从容器中取出对象
这两个功能也是Spring最核心的功能。 将对象存储在容器中的好处 将对象放到容器中呢就类似于线程池。 线程池会提前帮你创建好线程存在线程池中你要用的时候拿就行用完再放回来。 容器也是如此帮你创建好对象就放在容器里你用就拿用完就换回来。 而普通程序开发则是要用的时候才创建对象用完就销毁。 二、DI是什么
DI 是 Dependency Injection 的缩写翻译成中⽂是“依赖注入”的意思。
所谓依赖注入就是 由 IoC 容器在运⾏期间动态地将某种依赖关系注入到对象之中 。所以依赖注入DI和控制反转IoC是从不同的角度的描述的同⼀件事情就是指通过引入 IoC 容器利用依赖关系注入的方式实现对象之间的解耦。
也就是说比如说我要创造一台电脑在创建过程中。 我现在需要主板我就动态的去容器中拿主板注入到电脑中去。 这个过程就称之为依赖注入。 总结
以上就是今天要讲的内容本文介绍了Spring是什么要开启框架Spring的学习了。
路漫漫不止修身也养性。