什么是 AOP?对于 Spring IoC 和 AOP 的理解?

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

什么是 AOP?

AOP(Aspect-Oriented Programming),即 面向切面编程,

它与OOP( ObjectOriented Programming, 面向对象编程) 相辅相成,提供了与OOP 不同的抽象软件结构的视角

OOP 中, 我们以类(class)作为我们的基本单元

AOP 中的基本单元是 Aspect(切面)

对于 Spring IOC 和 AOP 的理解?

IOC

IOC(Inverse of Control:控制反转)是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。

IOC 在其他语言中也有应用,并非 Spring 特有。

IOC 容器是 Spring 用来实现 IOC 的载体,IOC 容器实际上就是个Map(key,value),Map 中存放的是各种对象。

对象之间的相互依赖关系交给IOC 容器来管理,并由 IoC 容器完成对象的注入,简化开发。

IOC 容器就像是一个工厂一样,当需要创建一个对象的时候, 只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。 在实际项目中一个 Service 类可能有几百甚至上千个类作为它的底层, 假如我们需要实例化这个 Service,可能要每次都要搞清这个 Service 所有底层类的构造函数,这可能会把人逼疯。如果利用IOC 的话,你只需要配置好,然后在需要的地方引用就行了,这大大增加了项目的可维护性且降低了开发难度。

Spring 时代一般通过 XML 文件来配置 Bean,后来开发人员觉得 XML 文件来配置不太好,于是 SpringBoot 注解配置就慢慢开始流行起来。

Spring IOC 初始化过程

xml--读取-->Resource--解析-->BeanDefinition--注册-->BeanFactory

IOC 源码阅读:

https://javadoop.com/post/spring-ioc

AOP

AOP(Aspect-Oriented Programming:面向切面编程)

能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权 限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。

Spring AOP就是基于动态代理的,

如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,

这时候Spring AOP会使用 Cglib ,这时候Spring AOP会使用 Cglib 生成一个被代理对象的子类来作为代理,如下图所示:

什么是 AOP?对于 Spring IoC 和 AOP 的理解?,spring面试题,java,开发语言

当然也可以使用 AspectJ ,Spring AOP 已经集成了AspectJ ,AspectJ 是 Java 生态系统中最完整的 AOP 框架了。

使用 AOP 之后可以把一些通用功能抽象出来,在需要用到的地方直接使用即可,这样大大简化了代码量。我们需要增加新功能时也方便,这样也提高了系统扩展性,日志功能、事务管理等等场景都用到了 AOP 。 

Spring AOP 和 AspectJ AOP 有什么区别?

Spring AOP 属于运行时增强,而 AspectJ 编译时增强

Spring AOP 基于代理(Proxying),而 AspectJ 基于字节码操作(Bytecode Manipulation)

Spring AOP 已经集成了 AspectJ ,AspectJ 应该算的上是 Java 生态系统中最完整的 AOP 框架

AspectJ 相比于 Spring AOP 功能更加强大,但是 Spring AOP 相对来说更简单,

如果切面比较少,那么两者性能差异不大。

当切面太多的话, 最好选择 AspectJ ,它比Spring AOP 快很多文章来源地址https://www.toymoban.com/news/detail-528436.html

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

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

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

相关文章

  • Spring IOC & AOP

    IOC,全程Inversion of Control(控制反转) 通过控制反转(创建对象的权限交给框架,所以叫反转)创建的对象被称为 Spring Bean ,这个Bean和用new创建出来的对象是没有任何区别的。 官方解释:Spring 通过 IoC 容器来管理所有 Java 对象的实例化和初始化,控制对象与对象之间的依赖

    2024年02月16日
    浏览(38)
  • spring框架,以及和spring框架相关的Java面试题和spring ioc的注入方式

    目录 一.spring来源,以及介绍 1.spring诞生的背景 2.spring框架 介绍 3.spring框架在使用中的优点以及不足 3.1优点  3.2不足 3.3总结 4.为什么要使用spring  二.将spring框架部署在IDEA中  1.替换pom.xml  2.构建spring所需要的xml文件 三.spring的三种注入方式 0.定义需要的类,方法 1.方法注入

    2024年02月12日
    浏览(50)
  • java八股文面试[Spring]——如何实现一个IOC容器

            IOC不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出 松耦合 ,更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IOC容器后,把 创建和查找依赖对象 的控制

    2024年02月10日
    浏览(47)
  • spring的AOP和IOC的原理

    目录 一、spring的ioc与aop原理 二、代理模式: 三、静态代理 四、动态代理 五、实际的操作 六、动态代理的实现: 七、什么是AOP 八、主流的AOP框架: 九、术语: 十、通知的五种类型: 十一、AOP的优点: 十二、AOP开发流程 核心概念:控制反转(IOC)/(DI),面向切面(AO

    2024年02月05日
    浏览(44)
  • Spring核心思想之IOC和AOP

    IOC和AOP不是Spring提出的,在spring之前就已经存在,只不过更偏向于理论化,Spring在技术层次把这两个思想做了⾮常好的实现(Java)。 什么是IoC? IoC Inversion of Control (控制反转/反转控制),注意它是⼀个 技术思想 ,不是⼀个技术实现。 描述的事情 :Java开发领域对象的创建,

    2024年02月09日
    浏览(55)
  • Spring IOC 与 AOP 基础原理,一篇搞定

    控制反转,一切对象交给Spring来创建于管理,将创建与使用对象的代码进行分离作用。实现代码的解耦。 因为以前的对象创建都是在程序的创建,管理。这是所谓的正转,如今的对象的创建是在IOC中,在 IOC Container中获取。这就是反转。 DI,denpendecy inject。依赖注入,在应用

    2024年01月21日
    浏览(39)
  • 全面掌握Spring框架:深入解析IOC、AOP、事务管理与注解使用

    探索Spring框架的深层次知识,包括Spring IOC容器的初始化流程、AOP的实现机制、事务管理的细节、循环依赖问题的处理、条件注解的应用、JavaConfig的使用方法、PostProcessor的角色、@Autowired和@Value注解的高级应用,以及${}与#{}的区别。

    2024年03月13日
    浏览(196)
  • 深入解析Spring的IOC与AOP及其在项目中的应用

    在现代的软件开发中,为了提高代码的可维护性、可扩展性以及降低代码的耦合度,使用设计模式和面向切面编程(AOP)成为了程序员们常用的技术手段。Spring作为一个优秀的Java开发框架,提供了IOC和AOP两个核心特性,极大地简化了开发工作。本文将深入探讨Spring的IOC和AO

    2024年02月13日
    浏览(52)
  • 深入理解Spring IOC

    🎉欢迎来到 Spring 专栏:深入理解Spring IOC 📜其他专栏:java面试 数据结构 源码解读 故障分析 系统设计 🎬作者简介:大家好,我是小徐🥇 ☁️博客首页:CSDN主页 小徐的博客 🌄每日一句: 好学而不勤非真好学者 📜 欢迎大家关注! ❤️ IOC 全称控制反转,英文名为 

    2024年01月21日
    浏览(45)
  • Spring02-Spring注解的使用、基于注解的IOC、纯注解配置、整合Junit、AOP入门、基于配置文件的AOP、切入点表达式、基于配置的文件环绕通知

    学习基于注解的 IOC 配置,即注解配置 和 XML 配置要实现的功能都是一样的,都是要降低程序间的耦合。只是配置的形式不一样。 关于实际的开发中到底使用xml还是注解,每家公司有着不同的使用习惯 , 所以这两种配置方式我们都需要掌握。 把 Spring 的 xml 配置内容改为使用

    2024年02月03日
    浏览(75)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包