【Spring开发】Spring中的IoC和AOP: 核心思想

news/2025/1/12 0:59:56/文章来源:https://www.cnblogs.com/o-O-oO/p/18521001
一、IoC1.1 什么是IoC?1.2 IoC解决了什么问题1.3 IoC和DI的区别二、AOP2.1 什么是AOP?2.2 AOP解决的什么问题2.3 为什么叫面向切面编程

核心思想

IoC和AOP不是spring提出来的,在spring之前就已经存在,只不过更偏向理论化,spring在技术层面把这两个思想做了非常好的实现。在手写spring中的IoC和AOP之前,我们先来了解IoC和AOP的思想。

一、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:Dependency Injection(依赖注入)

如何理解:

IoC和DI描述的是同一件事情,只不过角度不一样罢了。

二、AOP

2.1 什么是AOP?

AOP:Aspect Oriented Programming 面向切面编程/面向方面编程

AOP是OOP的延续,我们从OOP说起

OOP三大特征:封装、继承、多态

OOP是一种垂直继承体系:

OOP编程思想可以解决大多数的代码重复问题,但是有一些情况是处理不了的,比如下面的在顶级父类Animal中的多个方法中相同位置出现了重复代码,OOP就解决不了了。

横切逻辑代码:

横切逻辑代码存在什么问题:

横切代码重复问题横切逻辑代码和业务代码混杂在一起,代码臃肿,维护不方便。

AOP出场,AOP独辟蹊径提出横向抽取机制,将横切逻辑代码和业务逻辑代码分析:

代码拆分容易,那么如何在不改变原有业务逻辑的情况下,悄无声息的把横切逻辑代码应用到原有的业 务逻辑中,达到和原来一样的效果,这个是比较难的。

2.2 AOP解决的什么问题

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

2.3 为什么叫面向切面编程

: 指的是横切逻辑,原有业务逻辑代码我们不能动,只能操作横切逻辑代码,所以面向横切逻辑。

: 横切逻辑代码往往要影响的是很多个方法,每一个方法都如同一个点,多个点构成面,有一个 面的概念在里面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/825498.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【供应链安全】2024年我国软件供应链安全代表性厂商推荐:孝道科技

杭州孝道科技有限公司(又称“安全玻璃盒”)成立于2014年,是专注于为用户提供软件供应链安全的国家级高新技术企业、省级专精特新企业。公司坚持科技创新,基于AI模型和卷积神经网络,自主研发了全链路智能动态污点分析、函数级智能基因检测与自动化验证等核心技术与产品。其…

2024-2025-1 20241305 《计算机基础与程序设计》第六周学习总结

作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 2024-2025-1计算机基础与程序设计第六周作业这个作业的目标 1、Polya如何解决问题 2、简单类型与组合类型 3、复合数据结构 4、查找与排序算法 5、算法复杂度 6、递…

数据采集与融合技术作业3

作业3 我的getee仓库链接 https://gitee.com/LLLzt-III/crawl_project 作业3代码链接 https://gitee.com/LLLzt-III/crawl_project/tree/master/作业3 一、作业①:要求:指定一个网站,爬取这个网站中的所有的图片,例如:中国气象网(http://www.weather.com.cn)。使用scra…

硬件项目管理和软件项目管理的区别有哪些

硬件项目管理与软件项目管理在许多方面有本质的不同。它们包括但不限于:1.项目范围和需求变更的灵活性;2.项目生命周期;3.设计和开发过程;4.成本预算和控制;5.团队合作方式;6.测试与质量保证;7.风险管理。其中,项目生命周期和设计开发过程的差异是两者的核心区别。硬件…

【供应链安全】2024年我国软件供应链安全代表性厂商推荐:默安科技

杭州默安科技有限公司(简称“默安科技”)成立于2016年,先后布局了开发安全与软件供应链安全、智慧运营安全和云原生安全三大业务产线,拥有逐日、玄甲、影武者、AI安全、云安全5大安全实验室,及攻防渗透、漏洞挖掘的技术能力。默安科技从2017年开始布局开发安全与软件供应链…

【供应链安全】2024年我国软件供应链安全代表性厂商推荐:酷德啄木鸟

北京酷德啄木鸟信息技术有限公司(简称“酷德啄木鸟”)成立于2013年,是国内致力于AST技术开发的一家软件安全开发服务商,创始团队源于启明星辰攻防实验室。公司以源码静态检测能力为主,并围绕安全开发场景打造了Code Pecker系列源码审计及源码安全性分析类产品。随着国内代…

【供应链安全】2024年我国软件供应链安全代表性厂商推荐:比瓴科技

北京比瓴科技有限公司(简称“比瓴科技”) 是提供软件供应链安全产品和安全咨询服务的一家新创企业,成立于2021年。秉持业务与安全同步发展的理念,比瓴打造了瓴域、瓴镜、瓴知三大应用安全产线,同时提供DevSecOps认证咨询等安全服务。团队拥有较好的平台化集成及垂直整合能…

【供应链安全】2024年我国软件供应链安全代表性厂商推荐:海云安

深圳海云安网络安全技术有限公司(简称”海云安“) 成立于2015年,是一家致力于“AI+程序分析”赋能网络安全的国家级专精特新“小巨人”企业。该公司早期布局了移动应用安全业务,并陆续在隐私合规、准入管控、白盒测试方面分别打造了自己的特色能力,积极采用AI赋能应用安全…

Java Web和Java有什么区别

Java Web和Java都是Java编程语言的应用范畴,但它们有着根本的区别。主要包括:1.应用领域不同;2.技术栈和库的差异;3.开发工具和环境的不同;4.运行环境的区别;5.学习曲线的差异;6.与数据库的交互;7.安全性要求。Java主要关注核心编程,而Java Web专注于基于Java的网络应…

【供应链安全】2024年我国软件供应链安全代表性厂商推荐:梆梆安全

梆梆安全成立于2010年,是一家专注于移动、物联网安全领域攻防对抗能力建设的网络安全公司。 公司业务以移动安全为核心,建立了全面的移动应用安全防护生态体系。设有多个实验室及联合实验室,聚焦于移动应用、物联网、车联网等方向的攻防技术研究、漏洞挖掘、检测渗透、成果转…

链表和数组的插入删除时间复杂度都是o(n),为什么说链表效率高

链表和数组的插入删除时间复杂度都是o(n),链表效率高的原因:1. 动态内存分配;2. 插入和删除操作的局部性;3. 避免数组的扩容和复制;4. 无需移动大量数据;5. 适用于频繁的随机插入和删除;6. 简化数据结构维护。链表的节点可以在运行时动态分配内存,而数组在创建时需要分…

【供应链安全】2024年我国软件供应链安全供应市场特点分析及代表性厂商推荐+供应市场发展特点+代表性厂商能力分析

原创 安全牛在供应关系极度敏感的国际形势下,供应链被“武器化”已经成为一个不争的事实。从供应链视角开展软件安全审查,不仅是开展网络安全合规的必然要求,也是保障国家数字经济高质量发展的重要支撑,更是当前国际形势下我国势在必行的重要安全事项。 为帮助企业CSO更好地…