• IOC+AOP已经被面试被问烂了,还搞不明白?


    首先声明:IoC & AOP 不是 Spring 提出来的,它们在 Spring 之前其实已经存在了,只不过当时更加偏向于理论。Spring 在技术层次将这两个思想进行了很好的实现。

    什么是 IoC

    IoC (Inversion of control )控制反转/反转控制。它是一种思想不是一个技术实现。描述的是:Java 开发领域对象的创建以及管理的问题。
    例如:现有类 A 依赖于类 B

    传统的开发方式 :往往是在类 A 中手动通过 new 关键字来 new 一个 B 的对象出来使用 IoC 思想的开发方式 :不通过 new 关键字来创建对象,而是通过 IoC 容器(Spring 框架) 来帮助我们实例化对象。我们需要哪个对象,直接从 IoC 容器里面过去即可。
    从以上两种开发方式的对比来看:我们 “丧失了一个权力” (创建、管理对象的权力),从而也得到了一个好处(不用再考虑对象的创建、管理等一系列的事情)

    什么是 AOP

    AOP:Aspect oriented programming 面向切面编程,AOP 是 OOP(面向对象编程)的一种延续。

    AOP 解决了什么问题

    AOP 主要用来解决:在不改变原有业务逻辑的情况下,增强横切逻辑代码,根本上解耦合,避免横切逻辑代码重复。

    AOP 为什么叫面向切面编程

    切 :指的是横切逻辑,原有业务逻辑代码不动,只能操作横切逻辑代码,所以面向横切逻辑
    面 :横切逻辑代码往往要影响的是很多个方法,每个方法如同一个点,多个点构成一个面。这里有一个面的概念

    谷歌大牛甚至直言:“对于Java开发者,学习Java就是在学Spring。”

    本篇内容我将分成4个部分跟大家分享,请认真看完本文,对你工作一定大有帮助!

    Part1 SpringIOC

    学习Spring最重要的无非是Spring IOC以及Spring AOP,首先咱们把Spring IOC吃透,以下内容将截图展示。

    Spring IOC主要学习内容分为以下7点:

    ①Spring框架

    ②Spring lOC容器Bean对象实例化模拟实现

    ③Spring IOC容器Bean对象实例化

    ④Spring lOC配置文件加载

    ⑤Bean的作用域和生命周期

    ⑥Spring IOC扫描器

    ⑦Spring IOC注入

    Part2 SpringAOP核心组件分析

    Part 3SpringAOP IOC源码分析

    目录内容:
    https://p3-sign.toutiaoimg.com/pgc-image/f382abc23cad4671ae7806630f373b01~noop.image?_iz=58558&from=article.pc_detail&x-expires=1665039926&x-signature=72H6dEqCxNGK7zqZ9aPcXwN0ejo%3D

    部分内容展示:

    Spring事务原理:

    什么是BPP?

    AOP全面回顾:

    Part 4 看过都NB的Spring源码笔记

    Spirng源码笔记无非也是就是对IOC和AOP进行更加底层的分析,笔记内容我将分成四个部分,将通过案例来分析并手写实现IOC和AOP,不多BB,一起学习吧,

    • 吃透Spring核心思想IOC和AOP
    • 自定义Spring框架(手写实现IOC和AOP)
    • Spring IOC高级应用以及源码深度剖析
    • Spring AOP高级应用以及源码深度剖析

    ①什么叫IOC、AOP;它们能解决什么问题?IOC和DI的区别是什么?AOP为什么叫做面向对象编程?

    ②理解了Spring的核心思想后,先略过Spring是如何实现这两个思想的,通过案例来分析代码,并用现有知识解决痛点,从而一步步分析并手写实现IOC和AOP。

    ③分析Spring IOC高级应用,基础必不可少,像BeanFactory与ApplicationContext区别,纯xml模式,纯注解模式,xml与注解相结合模式你总得吃透。然后再理解lazy-Init 延迟加载,FactoryBean 和 BeanFactory,BeanPostProcessor,BeanFactoryPostProcessor。最后就是学习Spring IOC源码了。

    ④学习Spring AOP高级应用以及源码,整体上也和学习IOC差不多,我就不过多赘述了。

    最后

    作为一名 Java 开发,对 Spring 框架是再熟悉不过的了。Spring 支持的控制反转(Inversion of Control,缩写为IoC)和面向切面编程(Aspect-oriented programming,缩写为AOP)早已成为我们的开发习惯,仿佛 Java 开发天生就该如此。人总是会忽略习以为常的事物,所有人都熟练使用 IoC 和 AOP,却鲜有人说得清楚到底为什么要用 IoC 和 AOP。
    技术肯定是为了解决某个问题而诞生,要弄清楚为什么使用 IoC 和 AOP,就得先弄清楚不用它们会碰到什么问题。

  • 相关阅读:
    【Docker】docker拉取镜像错误 missing signature key
    文献阅读(207)FPGA HBM
    嵌入式系统日志轮转:实现与性能考量
    SpringBoot学习小结之分库分表、读写分离利器Shardingsphere
    Biotin-Dadps-N3,1260247-50-4,DADPS叠氮生物素科研试剂供应
    云原生之旅 - 5)Kubernetes时代的包管理工具 Helm
    面向对象之旅:核心理念、设计方法与UML详解(软件设计师笔记)
    【探索Spring底层】10.Spring选择代理
    动态链接库--dll使用示例
    国密 SM2 的非对称签名验签过程
  • 原文地址:https://blog.csdn.net/LBWNB_Java/article/details/127715149