用反射及动态代理模拟Spring

用反射及动态代理模拟Spring.md

摘要

spring其实大概做的就三件事.

  1. 解析xml文件
  2. 从解析中创建对象, 注入依赖
  3. 从解析中为方法动态代理

本文讲的会比较简单, 因为其实也就是解析xml, 以及使用反射机制创建设置对象, 生成代理类.

解析xml,创建对象

解析有很多库了, dom4j之类都行. 创建对象使用java的反射机制. 以下直接给出网上找到的实例.

用反射及动态代理模拟Spring

具体而言, 用xml解析出节点, 然后用反射, 根据属性初始化对象.

注入依赖

用反射及动态代理模拟Spring

也是实例, 具体而已, 就是读取子配置节点, 然后用反射机制setXXX()设置属性和依赖就可以了.

动态代理实现AOP

参考<动态代理>一文.

也是xml中读出配置节点, 用<动态代理>一文中的技术和反射机制, 创建代理类及初始化代理对象.

文中基于java动态代理, 但是像gclib原理也一样, 另外现在大多使用的AspectJ实现的动态代理, 只不过实现和效率不同. 理解java动态代理实现机制即可. 具体语法仍是参考手册.