当前位置: 首页 > article >正文

面试官:谈谈自己对IOC和AOP的理解? Part1

IOC(Inversion of control):即控制反转(反转控制)(具体含义后面会讲)。它是一种控制思想而不是一种技术,DI是它的实现方式之一。描述的是:Java对象的创建及管理问题。

首先:我们在开发中会面临一个问题。那就是对象之间的高度耦合。就比如三层架构中Service层用用Dao层,就必须通过在自己内部new一个Dao层对象出来,那么问题来了:如果Dao层的实现类发生更改,那就得修改Service层的实现类对象,这就属于硬编码了,就是因为通过new这种方法,两层架构之间的耦合度太高。如果你要说一个实现类说改也就改了,那么如果20个,30个呢?所以IOC出现了,IOC不通过new关键字来创建对象,而是通过IOC容器(spring框架)来帮助我们实例化对象,我们需要哪个对象直接去取就行(前提要进行bean的定义),IOC相较于传统方式(new)来说,丧失了创建,管理对象的权利,所以当我们需要使用对象的时候,直接取就行,拿上述问题来说,我们不需要修改源码,直接依赖注入即可。

那什么是控制反转呢?

控制:Java对象的创建和管理权利。

反转:将本属于我们的上述权利反转交给IOC容器

这是极为方便的,因为在实际开发中,我们并不需要关心对象的创建,我们只需要做一个衣来伸手,饭来张口的小fw就行,需要什么,直接从IOC中拿来用就行。所以IOC降低了对象之间的耦合度,使资源变得容易管理。

既然说到了IOC,那就必须得提一下DI!!!

DI(Dependency Injection):即依赖注入,由容器动态的将某个依赖关系注入到组件当中。依赖注入的目的并非为软件系统带来更多的功能,而是提升了组件重用的频率,并未软件系统搭建一个灵活,可扩展的平台。IOC会动态的向某个对象提供他所需要的对象,这一点就是通过DI实现的,通俗来讲,我们向IOC容器索取我们需要的对象,那IOC容器就会通过DI给我们。那DI是如何实现的呢?反射(以后会讲)

所以IOC是一种思想,而DI是一种技术或实现方式。

下一篇我们来聊一聊AOP,参考JavaGuide。


http://www.kler.cn/news/318368.html

相关文章:

  • Unity 设计模式 之 结构型模式 -【适配器模式】【桥接模式】 【组合模式】
  • 前端读取PDF和DOCX文件(干货分享)
  • 基于深度学习的可再生能源的效率优化
  • thinkphp 做分布式服务+读写分离+分库分表+负载均衡(分区)(后续接着写)
  • 《线性代数》学渣笔记
  • ai论文写作指导有哪些?六款最火ai论文生成平台大推荐
  • AI 智能名片链动 2+1 模式商城小程序中的体验策略
  • 某文书网爬虫逆向
  • Flask建立的Web网站的can‘t open file C_Program问题的分析
  • MySQL学习笔记(持续更新中)
  • sprintf()函数的介绍及其用法
  • 从入门到精通:PHP 100个关键技术关键词
  • 常用的基于无线射频( UWB)室内定位技术的原理与算法
  • Android View 的绘制流程
  • 获取参数
  • 如何在MATLAB中进行无线通信系统性能分析
  • 构建高效企业客户管理系统:SpringBoot应用
  • 旋转矩阵乘法,自动驾驶中的点及坐标系变换推导
  • Java调用数据库 笔记06 (修改篇)
  • 【JAVA开源】基于Vue和SpringBoot的图书馆管理系统
  • Spring自定义参数解析器
  • weblogic中间件漏洞复现
  • M2型TAM靶向肽CRV; Ahx-CRVLRSGSC ;
  • 【系统架构设计师】设计模式的分类
  • Python 中自动打开网页并点击[自动化脚本],Selenium
  • [Python]案例驱动最佳入门:Python数据可视化在气候研究中的应用
  • C++——用带有默认参数的函数实现,求两个整数或三个整数中的最大数。
  • QT客户端发送HTTP请求此时服务器到底收到了哪些数据?
  • fastson与jackson重点笔记(包入门)
  • Cilium + ebpf 系列文章- XDP (eXpress data Path)(四)