通过自己写的动态代理工具实现实例容器和注入方法
解决了循环依赖
主要实现了三个注解
@proxyObject:代理整个类对象,通过自己写的动态代理工具实现对每个类中方法的增强
对每个方法增加了在方法执行前会先检测容器中是否已经存在实例如果存在则会直接返回容器中存在的实例
在每个方法执行之后会将自身强拷贝到容器中替换原对象实现统一解决问题如下:
假如有abc三个实例互相依赖
在a和b实例化时会自动加入到容器中
在c实例化时应为a已经实例化了所以会直接指向a
但此时返回的a对象是还没有执行完成原本方法的对象是一个空对象
所以需要强拷贝执行完成方法的对象替换容器中的a对象
从而实现循环依赖的解决
可以看到图二是增强前代码
图三是增强后代码
@newObject:实例化一个类对象,单独使用会出现循环依赖问题
@autoSetField:根据名称自动注入
点击空白处退出提示
评论