用反射及动态代理模拟Spring
用反射及动态代理模拟Spring.md
摘要
spring其实大概做的就三件事.
- 解析xml文件
- 从解析中创建对象, 注入依赖
- 从解析中为方法动态代理
本文讲的会比较简单, 因为其实也就是解析xml, 以及使用反射机制创建设置对象, 生成代理类.
解析xml,创建对象
解析有很多库了, dom4j之类都行. 创建对象使用java的反射机制. 以下直接给出网上找到的实例.
具体而言, 用xml解析出节点, 然后用反射, 根据属性初始化对象.
注入依赖
也是实例, 具体而已, 就是读取子配置节点, 然后用反射机制setXXX()设置属性和依赖就可以了.
动态代理实现AOP
参考<动态代理>一文.
也是xml中读出配置节点, 用<动态代理>一文中的技术和反射机制, 创建代理类及初始化代理对象.
文中基于java动态代理, 但是像gclib原理也一样, 另外现在大多使用的AspectJ实现的动态代理, 只不过实现和效率不同. 理解java动态代理实现机制即可. 具体语法仍是参考手册.