【面试题】谈谈你对IOC和AOP的理解

这篇具有很好参考价值的文章主要介绍了【面试题】谈谈你对IOC和AOP的理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一:IOC的理解

IoC(Inverse of Control:控制反转)是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。IOC思想是基于IOC容器来完成的,IOC容器底层就是对象工厂(BeanFactory接口)。IOC的原理是基于xml解析、工厂设计模式、反射来实现的。 IoC 容器实际上就是个Map(key,value)Map 中存放的是各种对象。

通俗易懂的一句话结论:之前需要我们自己手动new对象的,但是我们现在不需要反复去new对象了,而是把new对象的主动权交给IOC容器,我们什么时候用什么时候取就可以了。

随着技术越来越先进,在Spring原生中我们觉得xml文件中配置还是有点麻烦,后来就有了springboot内部集成了这些功能,我们直接一个注解就可以了,方便了很多。

二:AOP的理解

AOP(Aspect-Oriented Programming:面向切面编程)AOP代表的是一个横向的关系,剖开对象的内部,并且把影响多个类的共同行为抽取出来,作为公共模块(叫做切面Aspect),然后再通过织入的方式把这个切面放进去。理解来说:就是能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。

通俗易懂的一句话结论:就是不通过修改源代码方式,在主干功能里面添加新功能。

AOP底层是通过动态代理来实现的,同时有JDK动态代理和CGLIB动态代理两种方式:

        1.有接口的情况,使用 JDK 动态代理,即创建接口实现类代理对象,增强类的方法。

        2.没有接口的情况,使用 CGLIB 动态代理,即创建子类的代理对象,增强类的方法。

AOP的专业术语

        1.Advice (增强/通知) 表示需要扩展的功能,所在的类叫做增强类/通知类。

        2.JoinPoint(连接点)程序执行的某个特定位置

        3.PointCut(切入点)AOP 通过切点来定位特定的连接点

        4.Aspect(切面)切面由切点和增强组成,他既包含横切的定义,也包括了连接点的定义。 springAOP就是负责实施切面的框架,他将切面定义为横切逻辑织入到切面所指定的连接点。

        5.织入(weaving) 就是把Advice添加到目标类的连接点的过程

        6.目标对象 顾名思义:要增强到具体的对象

        文章来源地址https://www.toymoban.com/news/detail-447477.html

到了这里,关于【面试题】谈谈你对IOC和AOP的理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 谈谈你对倒排索引的理解

    谈谈你对倒排索引的理解 在聊倒排索引之前,我们需要先了解一下‘索引’概念。 什么是索引呢? 索引是为了加速对表中数据行的检索而创建的一种分散的存储结构 。 通俗的来讲索引好比就是 新华字段中拼音的首字母还有偏旁 ,根据拼音的首字母和偏旁能很快的查找到你

    2024年02月07日
    浏览(27)
  • 18.谈谈你对JSON的理解

    JSON 是一种 基于文本的轻量级的数据交换格式 。它可以被 任何的编程语言读取 和作为 数据格式 来传递。 在项目开发中,使用 JSON 作为前后端数据交换的方式 。在前端通过将一个符合 JSON 格式的数据结构序列化为 JSON 字符串,然后将它传递到后端,后端通过 JSON 格式的字符

    2024年02月22日
    浏览(33)
  • 让我们谈谈你对 ThreadLocal 的理解

    从 JDK1.2 开始,ThreadLocal 是一个被用来存储线程本地变量的类。在 ThreadLocal 中的变量在线程之间是独立的。当多个线程访问 ThreadLocal 中的变量,它们事实上访问的是自己当前线程在内存中的变量,这能确保这些变量是线程安全的。 我们通常使用 ThreadLocal 解决线程中的变量冲

    2023年04月16日
    浏览(28)
  • 1、什么是面向对象?谈谈你对面向对象的理解

    对比面向过程,是两种不同的处理问题的角度 面向过程更注重事情的每一个步骤及顺序,面向对象更注重事情有哪些参与者(对象)、及各自需要做什么 比如 : 洗衣机洗衣服 面向过程会将任务拆解成一系列的步骤(函数),1、打开洗衣机 …2、放衣服…3、放洗衣粉…4、清洗…

    2024年02月13日
    浏览(32)
  • 分布式 - 谈谈你对分布式的理解,为什么引入分布式?

    不啰嗦,我们直接开始! 真正了解分布式系统的概念,日后工作中具有分布式系统设计思想。 能否在设计中对系统稳定性方面考虑周全。 能构建高 QPS 健壮的系统架构。 问题分析: 各种分布式框架层出不穷,Spring Cloud,阿里的 Dubbo,无论使用哪一个,原理都相同,考察下基

    2024年02月15日
    浏览(34)
  • 什么是 AOP?对于 Spring IoC 和 AOP 的理解?

    AOP(Aspect-Oriented Programming) ,即 面向切面编程, 它与 OOP( ObjectOriented Programming, 面向对象编程) 相辅相成,提供了与OOP 不同的抽象软件结构的视角 在 OOP 中, 我们以 类(class) 作为我们的基本单元 而 AOP 中的基本单元是 Aspect(切面) IOC(Inverse of Control:控制反转) 是一种设计思想,

    2024年02月12日
    浏览(34)
  • 【Java面试】Spring中的IOC和AOP

    IOC:控制反转也叫依赖注入。利用了工厂模式 将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的

    2024年02月10日
    浏览(35)
  • 【Java学习】 Spring的基础理解 IOC、AOP以及事务

        官网: https://spring.io/projects/spring-framework#overview     官方下载工具: https://repo.spring.io/release/org/springframework/spring/     github下载: https://github.com/spring-projects/spring-framework     maven依赖: 1.spring全家桶的结构构图:              最下边的是测试单元   其中spring封装

    2024年02月09日
    浏览(29)
  • 面试:谈一下你对Nginx的理解

    Nginx是什么 :Nginx是一个高性能、开源的Web服务器和反向代理服务器,以其卓越的性能和可扩展性而闻名。它通常用于将客户端请求转发到后端服务器、提供静态文件服务和负载均衡。 高性能和高并发 :Nginx的异步事件驱动架构使其能够有效地处理大量并发连接和请求,而不

    2024年02月10日
    浏览(26)
  • Spring面试攻略:如何展现你对Spring的深入理解

    Spring是一种Java开发框架,旨在简化企业级应用程序的开发和部署。它具有以下优点: 对象托管:Spring能够管理和赋值所有对象,使开发人员不再需要手动管理对象的创建和依赖关系。 动态代理:Spring的动态代理功能可以实现大部分可复用的逻辑功能,从而避免了重复的代码

    2024年02月13日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包