我理解的IoC和AOP

面试官:谈谈你对IOC和AOP的理解及AOP四种实现方式 IOC控制反转(IOC)是一种设计思想,就是将原本在程序中需要手动创建对象,现在交由Spring管理创建。举个例子,原本我们要在A类中调用B类的方法,就要直接在A中new出B类对象,然后调用B类中的方法,虽然能实现效果,不过存在一个问题,更改需求会对源代码进行修改,这是大忌。现在创建B对象就交给了Spring,在Spring中,B类对象被看成Bean对象(Spring中类就是Bean),这个Bean对象由spring容器进行创建和管理,当我们在配置文件中配置下的AOP。... 阅读详情
由于,我自己也只是看过一些这方面的文章,没有实作过,所以在这篇文章里面将不会设计到太多实现上的细节,基本上都是一些概念上和我个人理解的东西。

 

 

这两个概念基本上是一个设计层的概念,主要讲的就是怎么去分离关注,用面向对象的话说,就是怎么把职责进行分离。而这两个模式,我个人认为都有一个共同点,就是变以前的主动为被动,而我认为,这种改变可能也是将来面向对象发展的一个趋势。

 

 

首先说说什么叫主动。写过面向对象程序的人都知道,面向对象与面向过程的区别就是,面向对象是由一大堆对象组成的,对象通过协作完成面向过程中的任务。假设现在有对象A和B,那么当A需要使用B中的方法时,那么在A内部,就会有有一个对B方法的调用,这种调用就称为主动调用。代码大概会如下:

 

 

public class A{

 

 

B b;

 

 

public void methodA(){

 

 

b.methodB();

 

 

}

 

 

}

 

 

这里为了下文解释方便,我增加了一个调用点的定义,调用点就是调用发生的地方。也就是上面

 

 

b.methodB()中的b。

 

 

理解了什么叫主动之后,我想就先介绍什么叫IoC。IoC的全称这里就不说了,他的字面意思就是控制反转。在上面的代码当中,由于A调用了B的方法,因此就形成了一个A对B的依赖,这本身并没有什么问题。但是OO的思想是希望我们基于接口编程,而不是基于实现编程。因此,系统设计将不止是原有的A,B,而需要变成IA,IB,A,B,其中IA,IB是接口,A,B是对应的实现类,然后为了使得A中现在对B的实现依赖变成对接口的依赖,代码应该变成这样。

 

 

public class A implements IA{

 

 

IB b;

 

 

public void methodA(){

 

 

b.methodB();

 

 

}

 

 

}

 

 

这里虽然我们是基于接口编程了,但大家知道,在这中间,我们需要有一个步骤把b指向一个IB的实现类B,这个怎么做,就是IoC要做的事情,这里就不细说了。但简单来说,没有IoC,我们可能需要在A中通过某种方法去获取一个B的实例,但有了IoC,她就能在A不参与的情况下,给我们一个B的实例,所以,IoC要做的就是在调用点上从原来的主动生成一个调用点,变成被动的接受一个调用点。

 

 

接着就是AOP,全称也不说了,字面意思就是面向方面编程。举一个最普遍的例子,就是如果我们代码需要做日志的话,那么在没有AOP的时候,我们的代码可能就是这样:

 

 

public class A{

 

 

public void methodA(){

 

 

do log;

 

 

b.methodB();

 

 

}

 

 

}

 

 

这里methodA()中的做日志并不是方法本身的逻辑功能,而是一个附属功能,因此,我们需要把它分离出去。怎么分离,就是AOP要做的事情,简单来说,就是系统在调用者不知情的情况下,为我们的类A增加了一个代理类,她把我们的类A包装了起来,像这样:

 

 

public class AP extends A{

 

 

A a;

 

 

public void methodA(){

 

 

do log;

 

 

a.methodA():

 

 

}

 

 

}

 

 

public class A{

 

 

public void methodA(){

 

 

b.methodB();

 

 

}

 

 

}

 

 

于是,当我们以为自己在调用A的methodA()方法时,实际调用的将是AP中的methodA(),于是就可以把做日志的功能从原有的methodA()中分离了出去。所以,AOP要做的就是在用户不知道的情况下,将我们的调用点包裹了起来,从而把原来的功能进行了分离。

 

 

这个基本上就是我对IoC和AOP的看法。欢迎指正。
 
N32串口DMA接收不定长数据:空闲中断与DMA通道的协同处理 本文详细解析了在N32系列MCU中,利用串口空闲中断与DMA通道协同处理不定长数据的核心机制与实战方法。通过剖析空闲中断的触发时机、DMA的配置要点以及两者协同工作的关键时序,提供了避免数据错乱的避坑指南和完整的代码实现,旨在帮助开发者构建高效、可靠的嵌入式串口通信子系统。 阅读详情

相关推荐

深入解析LinuxCNC源码:从界面开发到硬件交互

本文深入解析LinuxCNC开源数控系统的源码架构与二次开发实践。详细介绍了从GTK+界面定制、Python脚本绑定,到硬件抽象层(HAL)配置与核心运动控制模块的完整开发流程。通过实战案例,帮助开发者掌握如何基于LinuxCNC源码进行界面开发和硬件交互定制,实现个性化数控系统。

weixin_29164843的博客 542

IOC和AOP

IOC,即,把对象的创建、初始化、销毁交给 Spring 来管理,而不是由开发者控制,实现控制反转。IOC 思想基于 IOC 容器完成,IOC 容器底层就是对象工厂(BeanFactory 接口)。IOC的原理是基于xml解析、工厂设计模式、反射实现的。。

weixin_73667562的博客 6479

【RTOS】 Vxworks 653 第一章 —— 初识 vx653 3.x

。。不是很重要,自己搜吧鲁棒分区是一种确保共享计算资源中独立运行功能实现​​时空隔离​​的机制,其目标是为集成模块中的混合临界性应用提供与联邦式部署(federated implementation)同等级别的功能隔离保障。具体表现为:​​多关键性共存​​:支持不同安全等级应用(如飞控系统A级与娱乐系统D级)在同一模块中协同运行。​​抗干扰能力​​:防止未授权或意外的时空干扰(如内存越界、时间窗口冲突),确保应用间互不影响。​​。

qq_38183694的博客 1280

IOC和AOP的概念

Spring的两大核心:IOC和AOP 一、IOC的概念 IOC 全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入(在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件)。 对象A依赖于对象B,当对象 A需要用到对象B的时候,IOC容器就会立即创建一个对象B送给对象A。IOC容器就是一个对象制造工厂,你需要什么,它会给你送去,你直接使用就行了,而再也不用去关心你所用的东西是如何

qq_44543430的博客 1万+

国科大学习资料--人工智能原理与算法-第六次作业解析(学长整理)

国科大学习资料–人工智能原理与算法-第六次作业解析(张文生老师主讲)(6.6、6.7、6.11) 6.6 说明如何通过使用辅助变量把诸如A+B=C这样的三元约束转变成三个二元约束。假设值域是有限的。(提示:考虑引进新变量表示变量对的值,引进约束如“X是Y变量对中的第一个元素”。)然后说明如何把多于三个变量的约束类似地转换为二元约束。说明如何通过改变变量的值域来消除一元约束。这就完整演示了任何CSP都可以转变为只含二元约束的CSP。 答:首先,我们引入一个新变量AB,假设A和B的范围均为N,AB的范围为N×N

无名何许人的博客 2870

TriCore架构-如何将系统刷成HSM

本文介绍了芯片刷写操作流程:首先加载project_Merge.s19文件,进入UCB界面展开BMHD0_ORIG和BMHD1_ORIG。重点说明需要将STAD地址从原始值A0000000修改为0XA00A0000,并详细描述了编辑、更新和写入芯片的步骤。最后提示在HSM刷写过程中如遇错误可能需要输入密码。该操作涉及关键地址修改,需谨慎执行。

xiandang8023的博客 95

AOP和IOC详解

在Java中,AOP(面向切面编程)和IoC(控制反转)是两种常见的设计模式,它们在现代Java应用程序中,尤其是在Spring框架中扮演着重要的角色,在软件工程中广泛应用的设计原则,特别是在企业级应用程序开发中。它们都旨在提高代码的模块化、可维护性和可扩展性。通过结合使用AOP和IoC,Spring框架提供了一种强大的方式来构建松耦合、易于测试和维护的应用程序。AOP允许开发者将业务逻辑与横切关注点分离,而IoC则简化了组件之间的依赖管理和配置。

精神小牛马 7012

SAP采购申请审批策略配置简介

SAP采购申请审批策略配置简介 1、CT04创建特征

我小时候很黑的博客 8162

IoC与AOP

IoC与AOP

weixin_51360664的博客 1793

ComfyUI 本地部署指南:概念、部署过程、生成图片、共享 WebUI 模型

ComfyUI 是一个基于节点的 Stable Diffusion 图形化用户界面。您可以通过将不同的节点连接在一起来构建生成图像的工作流程。一些常用的节点包括加载检查点模型(Load Checkpoint)、输入提示词(CLIP Text Encode)、指定采样器(KSampler)等。ComfyUI 将工作流程分解为可重新排列的元素,以便您可以轻松创建自己的元素。

水滴的博客 5033

海康VisionMaster与西门子Smart 200进行S7通信

海康VisionMaster与西门子Smart 200进行S7通信

haier123888的博客 8180

Spring中的IOC和AOP是什么意思?

(1) Spring是什么? IOC(控制反转)和AOP(面向方面编程)作为Spring框架的两个核心,很好地实现了解耦合。所以,简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 spring的基本框架主要包含六大模块:DAO、ORM、AOP、JEE、WEB、CORE Spring DAO:Spring提供了对JDBC的操作支持:JdbcTemplate模板工具类 。 Spring ORM:Spring可以与ORM框架整合。例如Spring整...

weixin_45704311的博客 1万+

代谢组数据分析(五):代谢组的功能富集分析

本文介绍了代谢组数据分析中的功能分析,包括代谢物富集分析、GSEA和ssGSEA方法。文章详细阐述了分析原理、应用背景、数据准备、统计方法以及结果解释,强调了在代谢通路和代谢物ID对应关系建立、差异代谢物筛选、富集程度计算等方面的关键步骤。通过这些方法,可以揭示差异代谢物在生物过程中的作用,为疾病研究和药物开发提供依据。

专注生信领域 5982

谈谈自己对Spring中IOC和AOP的理解

Spring框架的核心思想主要是IOC和AOP的思想IOCIOC概念Spring中的IOCAOP新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 IOC IOC概念 所谓IOC即 Inversion Of Control--

lensen明 1196

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

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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

如何快速理解AOP和IOC

如何快速理解AOP和IOC

weixin_46561483的博客 551

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Spring框架:谈谈对IOC和AOP的理解

在java面试中,如果我们被问及Spring框架的相关问题,那么一定避不开对Spring中的IOC和AOP的理解和使用,本文就简单谈论对于Spring中IOC和AOP的理解。 一、IOC的理解 1.1 IOC的概念与原理 IOC,即控制反转,把对象的创建、初始化、销毁交给 Spring 来管理,而不是由开发者控制,实现控制反转。IOC 思想基于 IOC 容器完成,IOC 容器底层就是对象工厂(BeanFactory 接口)。IOC的原理是基于xml解析、工厂设计...

weixin_48016395的博客 2万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

通俗理解Spring的IOC和AOP

字面意思通俗理解: 参考Aop理解地址:https://blog.youkuaiyun.com/ios_xumin/article/details/78465782 参考IOC和DI理解地址:https://blog.youkuaiyun.com/lhy55040817/article/details/5335699 具体代码理解:https://www.cnblogs.com/vanl/p/5607534....

有的话没说出来之前,你是他的主人,一旦说出来你就成了他的奴隶||想要干好事,别太把自己当人,别把别人太不当人||认识这个人就是开了一扇窗户,就能看到不一样的东西,听到不一样的声音,能让你思考、觉悟,这已经够了 601

Spring面试,IoC和AOP的理解

参考连接:Spring面试,IoC和AOP的理解 - 牧涛 - 博客园 (cnblogs.com)

qq_39691723的博客 154

Spring IoC 和 AOP的通俗理解

这篇文章会从下面从以下几个问题展开对IoC& AOP 的解释 什么是 IoC? IoC 解决了什么问题? IoC 和 DI 的区别? 什么是 AOP? AOP 解决了什么问题? AOP 为什么叫做切面编程? 首先声明:IoC & AOP 不是 Spring 提出来的,它们在 Spring 之前其实已经存在了,只不过当时更加偏向于理论。Spring 在技术层次将这两个思想进行了很好的实现。 什么是 IoC IoC (Inversion of control )控制反转/反转..

qq_39144436的博客 3116

理解Spring的AOP和Ioc/DI就这么简单

本文以通俗易懂的例子阐述了什么是AOP、Ioc、DI,相信读者看了之后会很容易明白 AOP —— Asepct-Orentid-Programming,面向切面编程 那么我们该怎么理解AOP呢?我们可以通过OOP —— 面向对象编程来进行比较分析 相信大家对于OOP的理解不难,就以人(people)来说,我们就可以把它看做一类对象,people有身高、体重、年龄等属性,也有跑步、吃饭、睡觉、娱乐等行为,把这些属于people的属性和行为封装在people类中,然后以统一调

浮晓悠羡 3万+

IOC和AOP的理解

面试题:谈谈你对IOC和AOP的理解 答:IOC是spring的一个容器帮助我们创建对象,他有一个强大的功能依赖注入,我只需通过xml配置或者注解@ 一、IOC 1.1、概念:是一个spring的容器,帮助我们创建对象 二、AOP 2.1、概念:是切面编程 2.2、应用于事务和日志 2.3、优点是:使我们的代码更加简洁 ...

阿鹏 495

简单介绍ioc和aop的理解

这么来说吧,在一个动作或者事件中,比如说,你现在想写字(Action),那么你需要笔,于是乎,你new了一个笔来写字,这里,你用了new笔,你这个动作和笔有了关联,没了笔,你就写不了字,也就是说,你的这个行为依赖于笔了,他们就构成了依赖关系。或者你现在想组装一台电脑(Transaction),那么你就需要显示器、主板、键鼠光驱等对象,这些对象通常是new出来的,new出来的对象和当前(this)对象就有了依赖关系。业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

qiaojk11221的博客 737

关于SpringMvc中的IOC和AOP的理解笔记

文章目录理解Spring的AOP和IOC实现原理1、 IOC02、SpringIoc的设计初衷是什么?03、SpringIOC的核心概念04、springioc容器的bean是单列的吗?05、所谓的依赖注入06:总结Springbean的三级缓存(循环依赖的问题)?2、AOP01、为什么要学习AOP02、如何进行的拦截的呢?03、AOP是如何增强的呢?04、总结05、谈谈你对Sprign的AOP的认识? 理解Spring的AOP和IOC实现原理 1、 IOC IOC(控制反转)就是依赖倒置原则的一种代码设计

ડUN的博客 2840

怎麼理解 Spring IOC和AOP

一、IOC的理解1.1 IOC的概念与原理IOC,即控制反转,把对象的创建、初始化、销毁交给 Spring 来管理,而不是由开发者控制,实现控制反转。IOC 思想基于 IOC 容器完成,IOC 容器底层就是对象工厂(BeanFactory 接口)。IOC的原理是基于xml解析、工厂设计模式、反射实现的。使用IOC可以降低代码的耦合度。1.2 Spring 提供 IOC 容器实现两种方式。

JBIB ENGINE 1010

Spring的IOC和AOP的理解

在 Spring AOP(面向切面编程)中,自定义注解是一种扩展机制,可以通过注解来定义特定的逻辑或行为,然后结合 AOP 的功能,在程序的执行过程中自动应用这些逻辑。在软件开发中,横切关注点是指那些散布在应用程序中的、与业务逻辑无关但又无法避免的功能,比如日志记录、事务管理、安全性检查、异常处理等。AOP的目的是将这些横切关注点模块化,减少代码的重复,提高代码的可维护性。AOP是一种用于解决横切关注点的强大编程模型,提供了将这些关注点模块化的能力,从而简化了业务逻辑代码,提升了代码的可读性和可维护性。

LeonLeo_的博客 940

Spring 的 AOP 和 IOC 的理解

IOC: Inversion of Control,控制反转, 控制权从应用程序转移到框架(如IOC容器),是框架共有的特性。 对于IOC的理解,可以把IOC看作是一个生产和管理bean对象的容器。原本程序中我们要手动自己创建(new)的对象统统交给Spring的IOC容器帮我们创建。同时这就意味着,要产生的单例的bean,这个对象的生命周期也是有IOC容器管理。 Spring中IOC的三种实...

weixin_40927959的博客 481
上一篇: 数据存储1-使用SQL Server存储过程中的返回值的两种方法
下一篇: 常用数据库分页代码
dracularking
博客等级 码龄20年 1592粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值