当前位置: 首页 > news >正文

[JavaWeb学习] Spring Ioc和DI概念思想

https://www.bilibili.com/video/BV1Fi4y1S7ix 黑马程序员学习所得

Spring Framework系统架构

AOP
在这里插入图片描述

IoC(Inversion of Control)控制反转

使用对象时,由主动产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转。

在这里插入图片描述
现在有一个需求,我们想要更换数据层的实现为
在这里插入图片描述
那么业务层中private BookDao bookDao = new BookDaoImp1();必须也要进行相应的更改。那么源代码动了,就需要重新编译、重现测试、重新部署、重新发布。
究其原因就是我们在一个类中写了其他类的实现,导致代码耦合度过高
那我们就删除这个类的实现private BookDao bookDao;
但是现在程序肯定运行不了,因为没有实现对象

解决方案:使用对象时,在程序中不要主动使用new产生对象,转换为由外部提供对象
这样的思想就是IoC(Inversion of Control)控制反转

Spring技术对Ioc思想进行了实现:Spring提供了一个容器,称为Ioc容器,用来充当Ioc思想中的外部。也就是由主动new对象转换为由IOC提供对象

在这里插入图片描述
Ioc容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IoC容器中统称为Bean

Service运行依赖Dao对象运行。
那么直接在Ioc容器中给两个对象添加依赖。

DI(Dependency Injection)依赖注入:在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入

在这里插入图片描述

目标:充分解耦
使用Ioc容器管理bean(Ioc)
在IoC容器内将有依赖关系的bean进行关系绑定(DI)

最终效果:使用对象时不仅可以直接从IoC容器中获取,并且获取到的bea已经绑定了所有的依赖关系

相关文章:

  • Python版中秋佳节月饼抢购脚本
  • C语言经典算法实例2:数组求素数
  • 什么是Java?
  • Vue插值表达式及常用指令
  • 【重学Reids 缓存】之Reids 缓存之RDB 持久化
  • 30分钟吃掉pytorch中的各种归一化层
  • Three.js 这样写就有阴影效果啦
  • Cravatar头像
  • Python-爬虫 (BS4数据解析)
  • java基于ssm+vue+elementui的多用户博客管理系统
  • java毕业设计网站swing mysql实现的仓库商品管理系统[包运行成功]
  • java毕业设计论文题目基于SSM实现的小区物业管理系统[包运行成功]
  • “蔚来杯“2022牛客暑期多校训练营10 EF题解
  • 人工智能科学计算库—Numpy教程
  • i.MX6ULL应用移植 | 基于ubuntu base 16.04搭建python3.9+pip3环境
  • [译] 怎样写一个基础的编译器
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Angular 响应式表单之下拉框
  • CentOS7简单部署NFS
  • log4j2输出到kafka
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • pdf文件如何在线转换为jpg图片
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 关于使用markdown的方法(引自CSDN教程)
  • 技术胖1-4季视频复习— (看视频笔记)
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 聚簇索引和非聚簇索引
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 延迟脚本的方式
  • 国内开源镜像站点
  • 树莓派用上kodexplorer也能玩成私有网盘
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • # Panda3d 碰撞检测系统介绍
  • # 达梦数据库知识点
  • #《AI中文版》V3 第 1 章 概述
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (分类)KNN算法- 参数调优
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (南京观海微电子)——I3C协议介绍
  • (算法)求1到1亿间的质数或素数
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转) Face-Resources
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)iOS字体
  • .bat文件调用java类的main方法
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET 使用 XPath 来读写 XML 文件
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)