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语言描述的配置文 ...
随机推荐
- 使用 Abp.Zero 搭建第三方登录模块(一):原理篇
第三方登录是基于用户在第三方平台上(如微信,QQ, 百度)已有的账号来快速完成系统的登录.注册-登录等功能. 微信的鉴权 以微信的鉴权为例: 假如你的网站有一个扫码登录的功能,会弹出一个由微信提供的 ...
- Linux文本管理命令
touch命令: 创建空文件:touch newfile 也可以使用重定向符(>)创建空文件: > newfile 刷新文件时间: touch 已经存在的文件 cp命令:文件的复制 选项: ...
- python小题目练习(九)
题目:将美元转化为人民币 需求:实现如图所示需求 代码展示: """Author:mllContent:将美元转化为人民币Date:2020-11-23"&q ...
- 019(The XOR Largest Pair)(字典树)
题目:http://ybt.ssoier.cn:8088/problem_show.php?pid=1472 题目思路:异或是啥呀? 异或就是把两个数字变成位数相同的二进制在同位比较,相同为0,不同为 ...
- 论文阅读 Inductive Representation Learning on Temporal Graphs
12 Inductive Representation Learning on Temporal Graphs link:https://arxiv.org/abs/2002.07962 本文提出了时 ...
- ASP.NET MVC-动态网页开发-宿舍管理系统
很不容易,我在这两周为了数据库的课程设计第一次学习到了动态网页的开发.首先是尊重知识,也是为了知识不被忘记,在这里写下这第一篇博客.才疏学浅如果有什么理解错误,多包涵. 首先是环境的配置,我自己使用的 ...
- Graphics2D类
Graphics2D类 Java语言在Graphics类提供绘制各种基本的几何图形的基础上,扩展Graphics类提供一个Graphics2D类,它拥用更强大的二维图形处理能力,提供.坐标转换.颜色管 ...
- MVCC - Read View的可见性判断理解
读了 @SnailMann大佬[MySQL笔记]正确的理解MySQL的MVCC及实现原理 收益颇丰,非常感谢! 但对其中如何判断事务是否可见性还是不太理解,于是作了本文,在原博客基础上,举例画图论证. ...
- Grid属性太多记不住?【Grid栅格布局可视化编辑器】直观易懂高效,拖拉拽,有手就行!
手把手教你通过拖拉拽可视化的方式带你练习[Grid栅格布局]的各个属性,直观易懂!再也不愁记不住繁多的Grid属性了.整个过程在众触应用平台进行,不用手写一行CSS代码. grid-auto-flow ...
- 如何在Excel批量查询电话号码归属地?
手机号码归属地的重要性大家应该都清楚,如果取消或者更改手机号码归属地,那么一会增加用户的被诈骗风险;二是对套餐资费会产生影响,加剧企业间的竞争,加剧数字鸿沟;三是企业运营管理需要投入大量人力物力,是个 ...