Spring核心思想Ioc和Aop (面试)
Spring核心思想Ioc和Aop (面试)
注意: Ioc和Aop并不是
Spring提出的
,在Spring之前就已经存在,Spring只是在技术层面
给这两个思想做了非常好的实现。
1 Ioc
1.1 下面谈谈你是怎么理解ioc的吧。
面试官: 下面谈谈你是怎么理解ioc的吧。
我:Inversion of Control (控制反转)。它只是一个
技术思想
,不是一个技术实现
。我:在传统的java开发中,
bean的创建,管理
一直是一个让人头疼的问题。我:
比如
类A依赖于类B,通常会在类A中new一个B的对象。我:在Ioc思想下,我们可以不用自己去
new对象
,而是由Ioc容器去帮助我们实例化对象并且管理它
。我们需要使用某个对象,去Ioc容器中要即可。
1.2 为什么称Ioc叫做控制反转?
面试官: 为什么称Ioc叫做控制反转?
我:
控制
:指得是对象的创建
。(实例化,管理)的权利。我:
反转
:控制权而又交给外部环境
了(spring框架、IoC容器)
1.3 Ioc解决了什么问题?
面试官: Ioc解决了什么问题?
我:IoC解决了
对象之间的耦合问题
。我:比如我们在使用Dao对象的时候,有多个service需要用到Dao对象,那么我们硬编码在每个service中new多个Dao对象
1.41.3 IoC和DI的区别?
DI:Dependancy Injection(依赖注⼊)
面试官: IoC和DI的区别
我:我觉得 IOC和DI描述的是同⼀件事情,只不过
⻆度不⼀样罢了
。
2 Aop
2.1 什么是AOP?
AOP: Aspect oriented Programming ⾯向切⾯编程/⾯向⽅⾯编程
面试官: 什么是AOP?
我:要说Aop,得先从OOP说起,
OOP三大特征:封装,继承,多态
。oop是⼀种垂直继承体系。
我:OOP编程思想可以解决⼤多数的
代码重复问题
,但是有⼀些情况是处理不了的,⽐如下⾯的在顶级⽗类 Animal中的多个⽅法中相同位置出现了重复代码
,OOP就解决不了。比如需要对
接口的性能监控
,OOP的思想,需要在每处需要监控的地方编写重复代码。
- 横切逻辑 (简单来说,就是在业务代码之前,或者之前,或者环绕他们执行)
横切逻辑代码
横切逻辑代码存在什么问题:
横切代码重复问题
横切逻辑代码和业务代码混杂在⼀起,代码臃肿,维护不⽅便 AOP出场,AOP独辟蹊径提出横向抽取机制
,将横切逻辑代码和业务逻辑代码分析
我:而利用Aop的思想可以完美的规避这些问题。
2.2 为什么叫做⾯向切⾯编程
「切」:指的是横切逻辑,原有业务逻辑代码我们不能动,只能操作
横切逻辑代码
,所以⾯向横切逻辑。()「⾯」:横切逻辑代码往往要
影响的是很多个⽅法
,每⼀个⽅法都如同⼀个点,多个点构成⾯
,有⼀个⾯的概念在⾥⾯
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)