• tiny-Spring【2】逐步step分析-新加入特性


      tiny-Spring是黄亿华大佬自己写的一个集合IOC和AOP于一身的一种轻量级【教学用】Spring框架,它的github库地址为:https://github.com/code4craft/tiny-spring

       这个轻量级框架一共有10个演进步骤,从第一步到第十步,我们可以通过查看它的测试用例以及源码内容的变化,逐步学习Spring的底层实现方式【那些SpringBoot、Spring以及其他衍生框架本质也是使用了这些方法实现,只是在其基础上添加了注解、新的简易化特性、更强的功能等等】。

      注意:

      ①这里面的逐步展示的框图,核心功能都是在前一步的基础上进行扩展而来的,相当于打补丁,前几步中的类也会有一些变化来适应当前的功能,但是变化不是特别大。

       ②可以直接在本地git clone目录下使用语句:git checkout step-1-【加tab键,回车到达指定的step代码版本】,不会的自己学一下:https://www.yiibai.com/git/git_checkout.html

    step-1-container-register-and-get

      这个版本的tiny-Spring非常简单,本质就是一个静态工厂类,传入实例名称与BeanDefinition键值对,其中BeanDefinition中存储的就是实例本身

    step-2-abstract-benfactory-and-do-bean-initilizing-in-it

      在上一步的基础,通过反射机制进行实例操作,现在传入的数据不是实例了,而是类对象

      在原有基础上添加了一个AbstractBeanFactory进行反射实例化

      

    step-3-inject-bean-with-property

      在原有的基础上通过反射机制中的Field字段进行属性初始化

      专门添加了PropertyValue【存储属性名称、属性值】和PropertyValues【数组形式的PropertyValue】

    step-4-config-beanfactory-with-xml

      在前一步的基础上引入通过xml本地文件进行数据初始化,①初始化Java-io配置;②读取xml本地文件;③通过之前已有的操作进行实例化已经属性初始化

      增加:io、xml相关辅助函数

    step-5-inject-bean-to-bean

       本质上与前一步一样,只是在代码中加入懒加载特性,对xml中读取到的数据进行注册,但是并没有立刻进行实例化操作,在需要使用的时候才进行对象实例化。

    step-6-invite-application-context

       将IOC的所有特性进行整合,将这些函数全部整合进行一个context包中以后就只需要调用一个简单的函数即可,无需关注其他的函数。

      

    step-7-method-interceptor-by-jdk-dynamic-proxy

      这一步是IOC与AOP的分界点,本步骤使用的是静态代理模式,直接传入实例,进行代理方法调用 

    step-8-invite-pointcut-and-aspectj

       首次引入AOP的相关概念,本步骤最重要的是验证了切面这一概念

     

    step-9-auto-create-aop-proxy

       将AOP的功能实现,使用的是系统自带的动态代理函数库

     

     到了这一步就有点混乱了,不过整理一下他们的逻辑就会发现他们使用动态代理以及切面match来实现AOP功能

    step-10-invite-cglib-aopproxy-factory

      这个和step-9基本上一样,不过这个是使用cglib实现的动态代理

     总结:

      通过黄大佬的tiny-Spring能够由浅入深的学习Spring的核心特性:IOC与AOP,底层实现其实也并不难,这些动态工厂、动态代理都是Java程序员必备的技能。

  • 相关阅读:
    三十岁了是否该改行——我完全晕倒了
    asp.net Context.Handler 页面间传值的几种方法
    信道与信道栈
    正则表达式之字符组
    移动Web界面样式CSS3
    Media Queries语法总结
    WCF全面解析(上下册)
    HTML5移动Web开发指南
    HTML5移动开发即学即用(双色)
    可靠会话最佳实践
  • 原文地址:https://www.cnblogs.com/Mufasa/p/11557722.html
Copyright © 2020-2023  润新知