依赖倒置、依赖注入和控制反转傻傻分不清楚?

依赖倒置#

啥是依赖倒置?依赖倒置是SOLID原则之一,词的字面意思就是将依赖关系的倒置。

其实依赖倒置大家早就会了,这个实际上就是面向接口编程。举个例子,现在电子产品更新换代快,可能没过多久咱们就想换一台电脑玩玩。即使电脑的品牌不同,但我们还是可以正常使用,总不会换个牌子就不会用了吧。

所以如果用代码表示的话,我们用接口IPC来代替具体的类,然后各个类去实现它的programming方法。

 
Copypublic interface IPC{ void programming(); } public class User { private IPC pc; //如果写成private Dell dell; //那我们换成联想的电脑就麻烦了 public User(IPC pc) { this.pc = pc; } public void usePC(){ pc.programming(); } } 

为啥叫它倒置呢,因为

依赖倒置、依赖注入和控制反转傻傻分不清楚?_第1张图片

 

依赖倒置、依赖注入和控制反转傻傻分不清楚?_第2张图片

 

是不是箭头倒过来了呢

依赖注入与控制反转#

依赖注入是实现控制反转的具体手段,这俩听起来高大上,其实...

 
Copypublic class Main { public static void main(String[] args) { //创建对象 Dell dell=new Dell(); //依赖注入 User user=new User(dell); user.usePC(); } } 

依赖注入指的是不在类内部使用new来创建依赖对象,而是将其在外部创建好后,通过构造函数或者赋值函数注入进类中,也就是当参数传进去。

而控制反转就是依赖注入中说的,将依赖类实例化的控制权交给外部逻辑处理。我不心系你这东西的创建,我只关心你提供的功能,一切都按我的标准指定好,拿来用就行。

比如我们笔记本电脑的各个部分是不同厂家生产的,笔记本电脑厂商只需把标准给各个零件生产商,让他们按要求生产,自己最后组装拿来用就好了。这样我们就达到了解耦的目的。

控制反转容器#

因为我们在程序设计时采用了依赖注入,那么不可避免的,我们要在程序里写大量的new。但对象的创建与依赖注入跟具体的业务并无关系,我们可不可以将其抽象成框架呢?

于是我们就有了IOC容器或者说依赖注入框架,只需要简单配置一下就可以由框架自动创建对象、管理对象以及依赖注入这些原本需要我们自己来做的事情。


SpringIOC知识导图

这是我整理的关于springIOC的相关知识点,因为个人原因,没有详细的展开进行整理,但是,只有自己整理的东西才是自己的,大家可以根据自己的情况进行整理,形成自己的东西,需要这份脑图原图的,关注+转发后,私信“资料”即可查看获取方式

依赖倒置、依赖注入和控制反转傻傻分不清楚?_第3张图片

 

而除了ioc之外,AOP也是一个不能忽略的问题

依赖倒置、依赖注入和控制反转傻傻分不清楚?_第4张图片

 

可能光有这张图对于初学者或者基础不是特别扎实的人来说,补充起来有那么一点困难,没关系,文档资源奉上


目录

第一部分

第1章Spring 整体架构和环境搭建

第2章容器的基本实现

第3章默认标签的解析

第4章自定 义标签的解析

第5章bean 的加载

第6章容器的功能扩展

第7章AOP

依赖倒置、依赖注入和控制反转傻傻分不清楚?_第5张图片

 

依赖倒置、依赖注入和控制反转傻傻分不清楚?_第6张图片

 

第二部分

第8章数据库连接 JDBC

第9章整合MyBatis

第10章事务

第11章SpringMVC

第12章远程服务

第13章Spring 消息

依赖倒置、依赖注入和控制反转傻傻分不清楚?_第7张图片

 

需要这份spring源码解析文档的老铁,关注+转发后私信“资料”即可查看获取方式

第三部分

第14章Spring Boot体系原理

依赖倒置、依赖注入和控制反转傻傻分不清楚?_第8张图片

 

依赖倒置、依赖注入和控制反转傻傻分不清楚?_第9张图片

 

详细展示

代码详解

依赖倒置、依赖注入和控制反转傻傻分不清楚?_第10张图片

 

源码支持

依赖倒置、依赖注入和控制反转傻傻分不清楚?_第11张图片

 

需要这份优化思维导图以及上面的知识图的老铁

关注公众号:Java架构师联盟,每日更新技术好文

部分资料已经上传到我的git仓库中:有需要的可以下载,,同步的还有相关的视频讲解以及学习文档,还不快点行动

https://gitee.com/biwangsheng/mxq

你可能感兴趣的:(java,架构,java,spring,spring,boot)