美文网首页
设计 IOC 和 AOP

设计 IOC 和 AOP

作者: 放开那个BUG | 来源:发表于2021-01-30 14:58 被阅读0次

1、前言

对于 Spring 都 IOC 跟 AOP 的概念想必大家都很熟悉,但 IOC、AOP 不只是局限于 Spring。duboo 自己也实现了 IOC 的概念,使用一个容器管理 bean 的生命周期。而 AOP 也不是 spring 才有运用,完全实现 AOP 概念的是 Aspectj 语言,只是 spring 只用于他的表达式匹配而已,而没有引入另外一门语言(增加学习成本)。

AOP 是一种编程概念,实现技术有动态代理、cglib 代理。jdk 动态代理只能代理接口,而 cglib 代理主要是通过继承来实现。我认为 AOP 比较重要有这几个概念:

  • 切入点:主要切哪里,根据表达式来定位
  • 表达式:定义需要切的地方,跟正则表达式功能类似
  • 通知:前置通知、后置通知、环绕通知等,定义切的时候的行为,比如前置通知是在方法执行之前需要做啥,以此类推

2、设计

工程来自于:https://github.com/code4craft/tiny-spring/tree/master

作者实现了一个比较完整的小型的 IOC、AOP 容器,可以去围观一波。它主要的流程如下:

    1. ApplicationContext 完成了类定义的读取和加载,并注册到 BeanFactory 中去。
    1. ApplicationContext 从 BeanFactory 中寻找 BeanPostProcessor,注册到 BeanFactory 维护的 BeanPostProcessor 列表中去。
    1. ApplicationContext 以单例的模式,通过主动调用 getBean 实例化、注入属性、然后初始化 BeanFactory 中所有的 Bean。由于所有的 BeanPostProcessor 都已经在第 2 步中完成实例化了,因此接下来实例化的是普通 Bean,因此普通 Bean 的初始化过程可以正常执行。
    1. 调用 getBean 时,委托给 BeanFactory,此时只是简单的返回每个 Bean 单例,因为所有的 Bean 实例在第三步都已经生成了。

看工程的时候,只需要看 ApplicationContextTest 即可,它是主要的入口,封装了一切调用。

IOC 容器实现比较简单,就是 xml 中定义好 bean,然后在程序中解析注入 beanFactory 即可。对于 AOP,使用了 jdk 动态代理、cglib 动态代理实现,在匹配哪些类需要被代理时,使用了 aspectj 的表达式匹配方法。

3、参考资料

https://www.zybuluo.com/dugu9sword/note/382745

相关文章

  • 设计 IOC 和 AOP

    1、前言 对于 Spring 都 IOC 跟 AOP 的概念想必大家都很熟悉,但 IOC、AOP 不只是局限于 S...

  • Spring框架的基本配置

    Spring的IOC和AOP概念 IOC: 控制反转不是什么技术,而是一种设计思想。传统Java SE程序设计,我...

  • Java面试题:Spring IOC容器启动流程附源码

    1. IOC容器概述 IOC和AOP是Spring框架的核心功能,而IOC又是AOP实现的基础,因而可以说IOC是...

  • Spring中的两大核心(Spring是一个IOC和AOP容器框架) IOC与aop IOC(spring的核心思...

  • spring源码总结笔记!深入浅出从入门讲到源码,建议先收藏再看

    本篇主要内容 Spring 概述(基本情况) 核⼼思想 IoC 和 AOP ⼿写实现 IoC 和 AOP(⾃定义s...

  • Java 面试问题系列三(Spring)

    1、Spring 主要思想是什么,回答 IOC 和AOP,怎么自己实现 AOP ? IOC 的好处 使用基于反射的...

  • 7

    Spring: 1、IOC,AOP IOC:Inversion of Control,控制反转 AOP:Aspec...

  • 理解springAop的正确姿势

    Spring有两大核心,IOC和AOP。IOC在spring项目中基本无处不在,而AOP则用的基本比较少。 AOP...

  • Spring学习笔记

    1. Spring: 主要技术IOC 和AOP, IOC通过反射控制,实现解耦。 AOP是面向切面编程,通过配置接...

  • springBoot

    springBoot所有功能离不开两大技术IOC和AOP。IOC进行资源的注册和调用,AOP通过注解动态增加功能。...

网友评论

      本文标题:设计 IOC 和 AOP

      本文链接:https://www.haomeiwen.com/subject/aztktltx.html