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 为什么叫做⾯向切⾯编程
「切」:指的是横切逻辑,原有业务逻辑代码我们不能动,只能操作
横切逻辑代码
,所以⾯向横切逻辑。()「⾯」:横切逻辑代码往往要
影响的是很多个⽅法
,每⼀个⽅法都如同⼀个点,多个点构成⾯
,有⼀个⾯的概念在⾥⾯
Spring核心思想Ioc和Aop (面试)的更多相关文章
- Spring核心思想——IOC和DI
基本概念 IOC是什么? IOC(Inversion of Control)控制反转,IOC是一种新的Java编程模式,目前很多轻量级容器都在广泛使用的模式. IOC解决了什么问题? ...
- 详谈 Spring 中的 IOC 和 AOP
这篇文章主要讲 Spring 中的几个点,Spring 中的 IOC,AOP,下一篇说说 Spring 中的事务操作,注解和 XML 配置. Spring 简介 Spring 是一个开源的轻量级的企业 ...
- Spring核心思想:“控制反转”,也叫“依赖注入” 的理解
@Service对应的是业务层Bean,例如: @Service("userService") public class UserServiceImpl implements Us ...
- Spring核心思想:IOC(控制反转)、DI(依赖注入)和AOP(面向切面编程)
Spring有三大核心思想,分别是控制反转(IOC,Inversion Of Controller),依赖注入(DI,Dependency Injection)和面向切面编程(AOP,Aspect O ...
- spring核心思想:IOC(控制反转)和DI(依赖注入)
Spring有三大核心思想,分别是控制反转(IOC,Inversion Of Controller),依赖注入(DI,Dependency Injection)和面向切面编程(AOP,Aspect O ...
- Spring 框架基础(03):核心思想 IOC 说明,案例演示
本文源码:GitHub·点这里 || GitEE·点这里 一.IOC控制反转 1.IOC容器思想 Java系统中对象耦合关系十分复杂,系统的各模块之间依赖,微服务模块之间的相互调用请求,都是这个道理. ...
- Spring(1) --入门(IoC,AOP)
说说你对spring的理解? Spring框架是一个轻量级的企业级开发的一站式解决方案,所谓一站式解决方案就是可以基于Spring解决Java EE开发的所有问题.Spring框架主要提供了IoC容器 ...
- Spring框架之IoC和AOP
Spring框架简介: 2003年2月,Spring框架正式成为一个开源项目,并发布于SourceForge中.致力于Java EE应用的各种解决方案,而并不是仅仅专注于某一层的方案,是企业应用开发的 ...
- Spring学习笔记IOC与AOP实例
Spring框架核心由两部分组成: 第一部分是反向控制(IOC),也叫依赖注入(DI); 控制反转(依赖注入)的主要内容是指:只描述程序中对象的被创建方式但不显示的创建对象.在以XML语言描述的配置文 ...
随机推荐
- 利用SignalR创建即时消息
1. 什么是SignalR? SignalR 是一个及时消息推送,它与.NET 的 WCF ,WebAPI类似 是客户端和服务器进行消息交换的一种工具 2.SignalR 的作用? 它可以实时同步在线 ...
- js 动画补间 Tween
1 /* RunningList (触发过程中可以安全的删除自己) 2 如果触发过程中删除(回调函数中删除正在遍历的数组), 不仅 len 没有变(遍历前定义的len没有变, 真实的len随之减少), ...
- linux 查询文件命令
jps; 当前服务器中所有的java进程: jps |grep XXX; 查询当前服务器某个进程: locate xxx;查询某个文件的位置:
- uniapp项目vue2升级vue3简单记录
看到好多开源项目都升级了vue3,看文章说vue3性能升级很多,而且组合式api很香,遂把最近开发的自助洗车app升级下,在此记录下出现的问题. uniapp升级vue3官方指南 我是先去vue官网看 ...
- 介绍python和库文件管理
一.Python 特点 1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单. 2.易于阅读:Python代码定义的更清晰. 3.易于维护:Python的成功 ...
- 十二张图:从0开始理解对称/非对称加密、CA认证、以及K8S各组件颁发证书原由
目录 一.对称加密 二.对称加密-不安全 三.非对称加密 四.非对称加密-不安全 五.对称加密和非对称加密结合 六.对称加密和非对称加密结合-不安全 七.Https的做法-引入CA机构 八.乘胜追击理 ...
- 聊聊 C++ 和 C# 中的 lambda 玩法
这几天在看 C++ 的 lambda 表达式,挺有意思,这个标准是在 C11标准 加进去的,也就是 2011 年,相比 C# 2007 还晚了个 4 年, Lambda 这东西非常好用,会上瘾,今天我 ...
- VisionPro · C# · 加密狗检查程序
写VisionPro C#项目时,我们需要在程序的启动时加载各种配置文件,以及检查软件授权,以下代码即检查康耐视加密狗在线状态,如查无加密狗,关闭程序启动进程并抛出异常. 1 using System ...
- linux下怎样在某个文件里面查找一个字符串?
方法一: grep命令 举个栗子:我想要在redis.conf中查询我设置的redis密码,执行下面代码 grep "require" redis.conf #grep " ...
- Spring框架系列(14) - SpringMVC实现原理之DispatcherServlet处理请求的过程
前文我们有了IOC的源码基础以及SpringMVC的基础,我们便可以进一步深入理解SpringMVC主要实现原理,包含DispatcherServlet的初始化过程和DispatcherServlet ...