Spring-IOC容器(控制反转)

2023-10-28

Spring框架图:

在这里插入图片描述
(1)核心层
Core Container:核心容器,这个模块是Spring最核心的模块,其他的都需要依赖该模块
(2)AOP层
AOP:面向切面编程,它依赖核心层容器,目的是在不改变原有代码的前提下对其进行功能增强
Aspects:AOP是思想,Aspects是对AOP思想的具体实现
(3)数据层
Data Access:数据访问,Spring全家桶中有对数据访问的具体实现技术
Data Integration:数据集成,Spring支持整合其他的数据层解决方案,比如Mybatis
Transactions:事务,Spring中事务管理是Spring AOP的一个具体实现,也是后期学习的
重点内容
(4)Web层
这一层的内容将在SpringMVC框架具体学习
(5)Test层
Spring主要整合了Junit来完成单元测试和集成测试

IOC原理:

new对象的事情交给Spring框架实现(IOC主要解决的问题就是解耦,将创建对象交给IOC容器进行管理,每次需要对象的时候管IOC要,避免改动业务层代码重新new对象
IoC的全称是Inversion of Control,翻译过来就是控制反转的意思。以前我们的编码习惯是需要什么对象的时候直接new一个出来就好了,然而有个人突然出来跟我们说以后不需要我们主动去new对象了,我们需要什么对象跟它说它就会为我们准备好,这我们当然是乐意的,这个人就是IoC。控制反转的意思就是我们将对象的创建和管理权交给IoC Service Provider(IoC思想的具体实现)

底层原理:
XML解析 + 工厂模式 + 反射
在这里插入图片描述

IOC接口(BeanFactory)

IOC接口
IOC思想基于IOC容器完成,IOC容器底层就是对象工厂
2、Spring提供IOC容器实现两种方式:(两个接口)
(1)BeanFactory:IOC容器基本实现,是Spring内部的使用接口,不提供开发人员进行使用
(2)ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员进行使用

3.ApplicationContext
ctrl+H
FileSystem:绝对路径在磁盘下的路径
ClassPath:工程文件src下的路径
在这里插入图片描述

1.什么是Bean管理(对对象的创建及管理统称为Bean被创建或被管理的对象在IOC容器中统称为Bean
Spring创建对象
Spring注入属性

2.Bean管理操作有两种方式
基于xml文件方式
基于注解方式

DI依赖注入:

在这里插入图片描述
(1)什么是依赖注入呢?
在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入业务层要用数据层的类对象,以前是自己new的现在自己不new了,靠别人[外部其实指的就是IOC容器]来给注入进来这种思想就是依赖注入

(2)IOC容器中哪些bean之间要建立依赖关系呢?
这个需要程序员根据业务需求提前建立好关系,如业务层需要依赖数据层,service就要和dao建立依赖关系

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring-IOC容器(控制反转) 的相关文章

随机推荐

  • 解决qemu虚拟机中内存偏小的问题

    问题描述 最近测试部报了一个问题 云平台中设置大于4GB的内存并设置numa 启动linux2 6 32内核的客户机 之后操作系统中查看实际内存是1 9G 比设置内存小了大概2 1GB 使用版本信息如下 QEMU version 3 0 0
  • 替代MySQL半同步复制,Meta技术团队推出MySQL Raft共识引擎

    作者 Anirban Rahut Abhinav Sharma Yichen Shen Ahsanul Haque 原文链接 https engineering fb com 2023 05 16 data infrastructure m
  • 关于突破SQL注入限制的新思路

    http www bitscn com network protect 200804 139215 html 突然想我们是否可以用什么方法绕过SQL注入的限制呢 到网上考察了一下 提到的方法大多都是针对AND与 号和 号过滤的突破 虽然有点
  • Mac电脑使用小技巧

    Mac OS很多操作与Windows还是有较大的区别 需要一段时间适应 因此我整理了Mac OS的实用小技巧 希望帮助刚入手Mac的小伙伴轻松上手 一 使用预览直接修改图片大小 在遇到需要修改图片的大小 大家的惯有思维就是用Photosho
  • C语言标准库函数qsort(快速排序函数)

    文章目录 一 函数原型 二 函数解析 比较函数 三 手写快排 四 使用qsort 1 对int数组排序 2 对double数组排序 3 对char数组排序 4 对字符串排序 1 char s 2 char s 5 对结构体排序 1 一级排序
  • 简单一行代码解决流读取导致StringBuilder.toString()乱码问题

    今天做上传功能代码读取返回值得时候 StringBuilder toString 出现乱码的情况 在网上找了一堆乱七八糟的办法 繁琐不说 代码还好几行 后来看到String类构造自己就有办法解决这个问题 简单一行代码搞定 在这里记录一下 S
  • 变分推断(Variational Inference)解析

    一 什么是变分推断 假设在一个贝叶斯模型中 x x x为一组观测变量 z z z为一组隐变量 参数也看做随机变量 包含在 z
  • Linux下的TCP&UDP通信作业

    题目描述 一 对于TCP传输 实现客户端发送某特定信息 字符时结束信息传输 断开连接 二 编写程序验证在同一台机器上TCP和UDP能不能同时占用同一个端口进行通信 开始编程 使用vim创建并编辑几个源文件 vim TCPserver c v
  • 由于找不到vcruntime140_1.dll,无法继续执行代码重新安装程序可能会解决此问题。

    出错情况如下 实在着不住了 那些不懂装懂的不要出来祸害人了 又是网上下载vcruntime140 dll放到c盘system32 64文件 这种做法纯属扯淡 vcruntime140 dll文件就是VC 2010的一个文件而已 直接下载运行
  • 序列化理解

    Java序列化 Java提供了一种对象序列化的机制 在该机制中 一个对象可以被表示为一个字节序列 该字节序列包含对象的数据 有关对象的类的信息和存储在对象中数据的类型 将序列化对象写入文件后 可以从文件中读取出来 对且对其进行反序列化 就是
  • 手把手教你配置Pytorch环境并使用(Win10系统下基于Anaconda完成的pytorch1.7.1和torchvision0.8.2的Pytorch深度学习环境搭建)

    概述 1 下载并安装Anaconda 2 在Anaconda Navigator中新建Pytorch虚拟环境 3 配置虚拟环境所需要的torch和torchvision 4 在Pycharm编译环境中使用刚刚建好的Pytorch虚拟环境 详
  • tensorflow兼容处理 tensorflow.compat.v1 tf.contrib

    20201130 问题提出 v1版本中tensorflow中contrib模块十分丰富 但是发展不可控 因此在v2版本中将这个模块集成到其他模块中去了 在学习tensorflow经常碰到tf contrib的代码 一敲就报错 import
  • ME28/ME2L/ME2N增强字段

    导语 用户希望在ME28采购订单审批的时候显示采购订单创建人以及描述 需要通过增强字段来实现 查询了一下SAP有标准的BADI可以进行增强 好像ME28 ME2L ME2N都是通过这里实现 使用不同的展示结构 这里没有深入测试其他事物 仅以
  • 终于弄明白 i = i++和 i = ++i 了

    作者 默辨 来源 https urlify cn Abyuyy 写在前面 前些天看完了JVM的内存结构 自以为自己是懂了 心里想想不就是分线程共享和线程私有嘛 然后又怎么怎么分怎么怎么的嘛 直到遇到了这道题目 说句实话 曾经自己做这种运算题
  • 空间金字塔池化、空洞卷积、深度可分离卷积

    空间金字塔池化 其主要目的是对于任意尺寸的输入产生固定大小的输出 思路 对于不同大小的feature map分成不同大小的块 不同大小的等份 根据具体情况进行设定 然后对每一份进行最大池化 一般是进行最大池化 将池化后的feature ma
  • 项目管理十大知识领域(十)--- 项目采购管理(过程、输入、工具和技术、输出)

    项目管理十大知识领域 十 项目采购管理 1 规划采购管理 输入 项目管理计划 需求文件 风险登记册 活动资源需求 项目进度计划 活动成本估算 干系人等级册 事业环境因素 组织过程资产 工具 自制或外购分析 专家判断 市场调研 会议 输出 采
  • leetcode第一题 :两数之和

    两数之和的哈希表解法 一 题目描述 二 算法思路 1 哈希表的相关说明 2 哈希算法 3 题目讲解 三 题解代码 四 运行结果以及最后的一点点解释 一 题目描述 这里直接贴的leetcode中的题目 哈哈哈 给定一个整数数组 和一个整数目标
  • 深入了解MySQL存储引擎-------InnoDB

    如果想看自己的数据库默认使用的那个存储引擎 可以通过使用命令SHOW VARIABLES LIKE storage engine 一 InnoDB存储引擎 1 InnoDB是事务型数据库的首选引擎 支持事务安全表 ACID 事务的ACID属
  • QT笔记- QListWidget删除item时, 信号QListWidget::currentRowChanged()出现行(索引)错误

    删除QListWidget行或项时 currentRowChanged 信号会在删除前发出 Qt信号QListWidget currentRowChanged int row 在QListWidget当前行号改变时发出 但需注意的是 在使用
  • Spring-IOC容器(控制反转)

    目录 Spring框架图 IOC原理 IOC接口 BeanFactory DI依赖注入 Spring框架图 1 核心层 Core Container 核心容器 这个模块是Spring最核心的模块 其他的都需要依赖该模块 2 AOP层 AOP