控制反转和依赖注入

控制反转和依赖注入控制反转和依赖注入

大家好,又见面了,我是你们的朋友全栈君。

控制反转是通过工厂类,把实现类的方法通过其实现的接口进行调用,并通过扫描所有的@Service注解找到这些类,把他们交给spring容器管理。

依赖注入:是动态的将依赖对象注入到bean组件

单独的讲其中一个不好理解,实际使用一般是:在启动工程时,如果是非懒加载,spring容器会自动扫描特定包下面所有带@Service注解的类,然后通过@Autowire注解注入前面扫描类的实现接口,调用相应方法。

 

控制反转是一种思想,跟依赖注入其实是一个东西,只不过现有控制反转的说法,再有依赖注入。

 

*下面这个网友举的控制反转例子很形象说明了这种思想:

什么是IOC

IOC即控制反转。我们模拟一个场景,小明生在红旗下长在春风里,是咱们社会主义接班人。小明是当今社会自由恋爱的践行者,他可以选择和他喜欢的姑娘约会恋爱,父母也没权干涉(儿大不由娘啊)。但是天有不测风云,一天小明醒来发现自己穿越了(至于怎么穿越我也不知道啊),穿越到了古代,这下蛋疼了,小明的婚姻大事只能听从父母之言媒妁之约,一下子婚姻恋爱主权由自己控制转变为父母和媒人控制了。虽然例子有点荒诞,但却很好的说明了什么是控制反转。对应在编程世界,我们原先需要对象(不是女朋友啊,是Object),一般都是主动new出,这是控制正转,到spring这就不行了,你想要对象实例,ok,你必须通过请求(注解或xml配置方式)获取到对象实例,所有的实例对象由IOC容器管理。

什么是DI

 

 

DI即依赖注入。依赖注入的概念其实和控制反转本质是一样的。只是解读的维度不一样。我们用下面一张图示意一下

控制反转和依赖注入

image.png

看到了吗?小明在古代娶媳妇儿依赖父母和媒人,而在自由恋爱的现代社会需要自己找(new)。好像这么看来自由恋爱更好吧。小伙子你还是太年轻了,自由恋爱你得花心思找个顺眼的姑娘吧,得了解她吧,得花时间和金钱追求她吧,没准时不时还给你点小脾气。但是古代就不一样了,您老就直接等着入洞房了咯(此处应有猥琐的表情),至于如何找到姑娘,如何谈判(对应的类实例就是配置属性),完全不用管,很牛叉有木有!!

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106056.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 上位机软件开发入门

    上位机软件开发入门上位机是指:人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的的计算机,一般是PLC/单片机之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般模拟量),转化成数字信号反馈给上位机。上下位机都需要编程,都有专门的开发系统。

    2022年5月6日
    122
  • Pycharm Terminal窗口运行程序「建议收藏」

    Pycharm Terminal窗口运行程序「建议收藏」anaconda配置好环境(一系列的准备操作,我不会,老师帮我弄的)最开始:base是一个根目录,共用环境在远端创建好一个自己的环境:condacreate-n环境名激活环境:sourceactivate环境名进入环境后下载的包才是在自己的目录下,如果在base那块下载会影响别人的环境下载包指令:pipinstall包名进入你远程环境下的目录:cd目录(这些都要配好,还是我不会)目录的话可以这样找运行:python文件名.py…

    2025年7月12日
    8
  • 【零基础】MT4量化入门一:跑一个简单的boll

    【零基础】MT4量化入门一:跑一个简单的boll一、前言  今天开始研究MT4了,MT4是大大有名的外汇交易和量化软件,使用一种叫做MQL的语言来开发量化程序(跟C比较像)。因为是外国人做的,用的也大部分是外国人,使用起来不是很顺手,跟极星各有优劣吧。这里我就先逐步讲一下MT4的使用,然后再简单跑一个boll指标,最后汇总下使用心得。二、安装  1、下载MT4  不熟悉这东西,连安装都是个麻烦事儿。MT4官网好找一搜就有,下载链…

    2022年5月23日
    50
  • navicat premium 15 激活【2021免费激活】

    (navicat premium 15 激活)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html0VOERWDQ5R-eyJsa…

    2022年3月31日
    131
  • 空格符号代码_java空格符号代码

    空格符号代码_java空格符号代码html空格符号代码 :一个字符的半角的不断行的空格,如果需要在网页中插入多个空格,可以将“ ”代码写多遍; :一个字符的半角的空格,也可以将“ ”写多遍来插入多个空格; :两个字符的全角的空格,也可以将“ ”写多遍来插入更多的空格; :小于一个字符的空格;说明:单词后面的分号记得带上,是不能省略的,它也是html代码中的一部分。二、为什么要…

    2022年9月22日
    4
  • Docker学习笔记(1) — 安装docker

    Docker学习笔记(1) — 安装docker

    2022年3月6日
    60

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号