手写Spring高级源码笔记(二):核⼼思想IOC+AOP

spring高级源码笔记:深入理解阿里spring源码核心思想及框架应用 一,spring概述 Spring 简介 Spring 是分层的 full-stack(全栈) 轻量级开源框架,以 IoC 和 AOP 为内核,提供了展现层 SpringMVC 和业务层事务管理等众多的企业级应⽤技术,还能整合开源世界众多著名的第三⽅框架和类库,已经成为使⽤最多的 Java EE 企业应⽤开源框架。 我们经常说的 Spring 其实指的是Spring Framework(spring 框架)。 本篇文章主要内容会有Spring 概述(基本情况),核⼼思想 IoC 和 AOP, 阅读详情

第⼆部分 核⼼思想

 
注意: IOC 和 AOP 不是 spring 提出的,在 spring 之前就已经存在,只不过更偏向于理论化, spring 在技 术层次把这两个思想做了⾮常好的实现( Java )
 

第1节 IoC

 

1.1 什么是IoC?

 
IoC Inversion of Control ( 控制反转 / 反转控制 ) ,注意它是⼀个技术思想,不是⼀个技术实现 描述的事情: Java 开发领域对象的创建,管理的问题
 
传统开发⽅式:⽐如类 A 依赖于类 B ,往往会在类 A 中 new ⼀个 B 的对象
IoC 思想下开发⽅式:我们不⽤⾃⼰去 new 对象了,⽽是由 IoC 容器( Spring 框架)去帮助我们实例化对 象并且管理它,我们需要使⽤哪个对象,去问 IoC 容器要即可
 
我们丧失了⼀个权利(创建、管理对象的权利) , 得到了⼀个福利(不⽤考虑对象的创建、管理等⼀系列
事情)
为什么叫做控制反转?
控制:指的是对象创建(实例化、管理)的权利
反转:控制权交给外部环境了( spring 框架、 IoC 容器)

1.2 IoC解决了什么问题

 
IoC 解决对象之间的耦合问题
1.3 IoC 和 DI 的区别
 
DI : Dependancy Injection (依赖注⼊)
怎么理解: IOC 和 DI 描述的是同⼀件事情,只不过⻆度不⼀样罢了

第2节 AOP

 

2.1 什么是AOP

 
AOP: Aspect oriented Programming ⾯向切⾯编程 / ⾯向⽅⾯编程
AOP 是 OOP 的延续,从 OOP 说起 OOP 三⼤特征:封装、继承和多态
oop 是⼀种垂直继承体系

 

OOP 编程思想可以解决⼤多数的代码重复问题,但是有⼀些情况是处理不了的,⽐如下⾯的在顶级⽗类 Animal 中的多个⽅法中相同位置出现了重复代码, OOP 就解决不了

横切逻辑代码

横切逻辑代码存在什么问题:
  • 横切代码重复问题
  • 横切逻辑代码和业务代码混杂在⼀起,代码臃肿,维护不⽅便
AOP 出场, AOP 独辟蹊径提出横向抽取机制,将横切逻辑代码和业务逻辑代码分析
 
代码拆分容易,那么如何在不改变原有业务逻辑的情况下,悄⽆声息的把横切逻辑代码应⽤到原有的业 务逻辑中,达到和原来⼀样的效果,这个是⽐较难的
 

2.2 AOP在解决什么问题

在不改变原有业务逻辑情况下,增强横切逻辑代码,根本上解耦合,避免横切逻辑代码重复
 

2.3 为什么叫做⾯向切⾯编程

「切」:指的是横切逻辑,原有业务逻辑代码我们不能动,只能操作横切逻辑代码,所以⾯向横切逻辑
「⾯」:横切逻辑代码往往要影响的是很多个⽅法,每⼀个⽅法都如同⼀个点,多个点构成⾯,有⼀个
⾯的概念在⾥⾯
 
 
 

准备了更多关于Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构面试解析+知识点集合等等可以去这个Github链接地址:

https://github.com/ThinkingHan/Java-note 阅读,Star一下吧,感谢支持~

 
 
 
 
 
【IoC 和 DI 有什么区别】 阅读详情

相关推荐

STM32F103串口接收中断:USART_IT_IDLE和USART_IT_RXNE区别

2:如果是大于1个byte的数据,在不用DMA的情况下,同时使能USART_IT_RXNE,USART_IT_IDLE中断,每收到一个字节在中断中把数据存到缓存中,待收到USART_IT_IDLE中断时,收完整帧数据,然后再解析处理数据。比如:如上图在初始化时,同时开启了两个中断,如果传送8个字节的数据,就会产生8个USART_IT_RXNE,和1个USART_IT_IDLE中断。(如果接收到数据,在1个byte的时间内,没有收到新数据,就认为是数据传送完成,产生空闲USART_IT_IDLE中断)

weixin_66299220的博客 2403

面试官:IoC 和 DI 有什么区别?

IoC 是 Inversion of Control 的缩写,翻译成中文是“控制反转”的意思,它不是一个具体的技术,而是一个实现对象解耦的思想。要解释什么是解耦?就要了解什么是耦合,所谓的耦合是指:两个或两个以上对象存在依赖,当一方修改之后会影响另一方,那么就说这些对象间存在耦合。而解耦就是解除两个或两个以上对象,修改之后影响另一方的问题。那 IoC(控制反转)是如何实现解耦的呢?class A {// 调用 B 类中的 init 方法b.init();...

m0_72885838的博客 2917

yanshee 机器人全流程指南

2.点击yanshee app右上角根据提示操作 3.当手机显示成功连接 ,按下机器人胸前按钮说出“ip地址”4.根据机器人播报的ip地址加上:8888使用浏览器访问,你就会看到 jupyterd的界面,里面可以新建文件也可以改他存在的文件。我们使了yanshee机器人,这个是面向K12、中高职、高校学生推出的开源人形机器人教育平台,应用于课程教学、竞赛、科研活动等场景。我们接下来可以根据这些apl做许多好玩的,比如控制他运动,跳舞唱歌,it`s easy。注意电脑,手机,机器人必须连同一个网。

qq_44827929的博客 7617

IOC和DI 的区别

IOC的意思是控制反转,DI的意思是依赖注入 ,前者是目的更偏向于实际操作相比于传统的通过new的方式来创建对象并手动的为属性赋值这些行为完全交于程序员控制,IOC则是把创建对象并给对象中的属性赋值交由sprin工厂管理,从而达到控制反转的目的 而后者则是通过依赖注入的手段让spring工厂来管理对象的创建和属性的赋值 。 ...

m0_60813084的博客 2954

汽车级智能栅极驱动器深度解析 | 连载01:DRV871x-Q1系列产品架构与核心特性

集成度:单芯片集成多通道驱动器、电源管理、电流检测智能化:自适应控制算法,减少外部元件可靠性:多重保护机制,满足汽车级要求灵活性:SPI和硬件两种接口,适应不同应用需求。

VehSwHwDeveloper的博客 1155

DDR5电流三参数IDD/IDDQ/IPP实操解析与产线避坑指南

DRAM芯片功耗测试中,IDD(动态工作电流)、IDDQ(静态待机电流)和IPP(峰值上电电流)是表征其电气健康状态的三大基础物理量。它们分别对应晶体管开关翻转、亚阈值漏电及电源网络瞬态响应等不同层级的半导体物理机制,共同构成JEDEC JESD79-5标准第11章的核心验证体系。理解这三类电流的产生原理,不仅关乎芯片能否通过量产门槛,更直接影响系统级电源完整性、高温稳定性与长期可靠性。在服务器、AI加速卡及车载计算等高负载场景下,微小的IDDQ漂移或IPP尖峰失真,都可能引发蓝屏、热失控甚至冷机启动失败。

weixin_29183637的博客 358

你可以错过其他笔记,但这份Spring 源码笔记你一定不能错过!

Spring简介Spring发展历程Spring的优势Spring的核心结构Spring框架版本。

m0_73311735的博客 189

基于NE555的触摸延时开关电路设计与实现

本文详细介绍了基于NE555芯片的触摸延时开关电路设计与实现方法。通过分析NE555的单稳态工作模式,结合定时电阻、电解电容等关键元件选型,提供了一套完整的电路搭建方案。文章还包含抗干扰设计、调试技巧及常见故障处理,帮助电子爱好者快速掌握触摸延时灯的制作要点。

weixin_29268267的博客 791

基础+进阶+实战+源码,阿里最新出品SpringBoot高级笔记太香了!

简单地应付一下面试或者搭建一个小框架自然是很简单,但要在将SpringBoot 相关技术点快速运用在微服务项目中,并且更安全更频繁的部署,那对于初学者来说,还是有点困难的。这不,互联网雷锋(小编我)今天就为大家带来了一份阿里老哥亲码的SpringBoot全栈小册,内容涵盖基础、进阶、实战、源码,不管你工作几年,都可以看看!Spring从2002年发展至今,随着技术的发展,在SpringBoot没有推出之前用Spring开发和部署效率一直在不断降低,

javaAnPou的博客 202

uniapp - H5网页打包运行报错Failed to load resource: net::ERR_FILE_NOT_FOUND(uniApp打包成H5部署到服务器,打包h5白屏并报错页面空白)

Failed to load resource: net::ERR_FILE_NOT_FOUND,uniapp 坑之打包之后白屏,uniapp打包h5,HBuilderX 打包H5后空白报错 Failed to load resource: net::ERR FILE NOT_FOUND,UNI-APP H5应用白屏(空白页)解决方案,白屏并报错Failed to load resource: net::ERR_FILE_NOT_FOUND,uniapp开发,打包成H5部署到服务器,uniapp打包之后首页

🏆 前端领域优质创作者 3579

仿真学习系列(三十八):Sigrity仿真之单端S参数提取

S 参数(Scattering Parameters)是高速信号分析中最基础也最常用的指标,能够全面表征走线、过孔、连接器等互连结构的高频行为。在 Sigrity PowerSI 中,Model Extraction 是最常用的 S 参数提取方式,适用于高速差分线、单端线、过孔、参考平面等各种拓扑结构。 本节将通过示例讲解如何在 PowerSI 中完成一次完整的 S 参数提取流程,包括:对象选择、端口设置、频率范围配置以及结果查看。掌握此方法后,即可对任意高速网络执行阻抗、插损、回损、串扰分析,为进一步的

案例文章,高速信号 838

Spring框架及源码学习---手写IOC和AOP

Spring 是分层的 full-stack(全栈) 轻量级开源框架,以 IoC 和 AOP 为内核,提供了展现层 Spring MVC 和业务层事务管理等众多的企业级应⽤技术,还能整合开源世界众多著名的第三⽅框架和类库,已 经成为使⽤最多的 Java EE 企业应⽤开源框架。我们经常说的 Spring 其实指的是Spring Framework(spring 框架)。==IoC Inversion of Control (控制反转/反转控制),注意它是⼀个技术思想,不是⼀个技术实现 ==

weixin_43811057的博客 1217

S7-1200中OB100和OB20中断使用方法及示例程序说明(图文)

S7-1200中OB100和OB20中断使用方法及示例程序说明(图文)

Robot_PLC_HMI_Automation 8586

【Spring Boot】Spring AOP 快速上手指南:开启面向切面编程新旅程

本期主要讲解了关于Spring AOP入门概念,以及快速入门,以及Spring AOP的代码的详细介绍:切点,连接点,通知,以及切面的概念,还有通知类型等其他注解的介绍~~~

GGBond778的博客 5649

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

gdal源码剖析与开发指南pdf_spring高级源码笔记:深入理解阿里spring源码核心思想及框架应用...

一,spring概述Spring 简介Spring 是分层的 full-stack(全栈) 轻量级开源框架,以 IoC 和 AOP 为内核,提供了展现层 SpringMVC 和业务层事务管理等众多的企业级应⽤技术,还能整合开源世界众多著名的第三⽅框架和类库,已经成为使⽤最多的 Java EE 企业应⽤开源框架。我们经常说的 Spring 其实指的是Spring Framework(spring 框...

weixin_39915668的博客 237

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

不懂源码?来看看阿里P8亲自手码的Spring源码解析整套笔记,高薪offer唾手可得!

正文 开发人员面对突如其来的变化,无论在架构选型,还是在日常开发中,总会面临各种挑战和考验。唯有系统性地掌握 Spring Framework 编程思想、设计理念,以及具体的实现方式,方可游刃有余,以免进退失据。 作为 Spring 技术生态的基石,Spring Framework 无论在设计,还是在实现上,都是一个优秀的框架,许多细节方面是非常值得我们学习的,包括: Java 语言特性的运用,如反射、动态代理、枚举、泛型、注解、ARM,Lambda 语法等 设计思想和模式的实现,如 OOP、IoC

bieber007的博客 1353

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Spring学习笔记

Spring学习笔记 第一部分:Spring 概述 1.1 Spring 简介 轻量级开源框架 核心是IOC和AOP 使⽤最多的 Java EE 企业应⽤开源框架 1.2 Spring 发展历程 EJB->Expert One-to-One J2EE Design and Development论文->Spring 1.3 Spring 的优势 ⽅便解耦,简化开发 通过Spring提供的IoC容器,可以将对象间的依赖关系交由Spring进⾏控制,避免硬编码所造成的 过度程序耦合。⽤户也不

徐小陌的博客 2479

阿里P7大牛花了16小时讲完Spring源码解析整套笔记,满满399页,拿走不谢

正文 开发人员面对突如其来的变化,无论在架构选型,还是在日常开发中,总会面临各种挑战和考验。唯有系统性地掌握 Spring Framework 编程思想、设计理念,以及具体的实现方式,方可游刃有余,以免进退失据。 作为 Spring 技术生态的基石,Spring Framework 无论在设计,还是在实现上,都是一个优秀的框架,许多细节方面是非常值得我们学习的,包括: Java 语言特性的运用,如反射、动态代理、枚举、泛型、注解、ARM,Lambda 语法等 设计思想和模式的实现,如 OOP、IoC、DD

Java_supermanNO1的博客 507

spring学习笔记(一)(框架思想以及手写实现IOC和AOP)

模块二任务一笔记 1-2.spring框架介绍 ​ Spring 是分层的 full-stack(全栈) 轻量级开源框架,以 IoC 和 AOP 为内核,提供了展现层 SpringMVC 和业务层事务管理等众多的企业级应⽤技术,还能整合开源世界众多著名的第三⽅框架和类库,成为使⽤最多的 Java EE 企业应⽤开源框架 Spring的优势: ​ ⽅便解耦,简化开发 ​ 通过Spring提供的IoC容器,可以将对象间的依赖关系交由Spring进⾏控制,避免硬编码所造成的过度程序耦合。⽤户也不必再为单例

weixin_47603407的博客 255
上一篇: 手写Spring源码笔记(一):你不知道的Spring?——简介+发展历程+优势+核⼼结构+框架版本
下一篇: 全网独家的“MySQL高级知识”集合,骨灰级收藏,手慢则无!
加班不秃顶
博客等级 码龄7年 1822粉丝 599原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值