美文网首页
手写框架探险系列-ioc框架的完善

手写框架探险系列-ioc框架的完善

作者: 潇潇洒洒的写书 | 来源:发表于2019-05-02 21:40 被阅读0次

之前自己做的ioc

  • 源码地址
  • 之前总体方向是正确的,只是具体的实现有些问题。职责有些混乱。
  • 不足,好多没有考虑到:
    • 当ioc容器冲突的时候怎么处理,之前通过返回null来处理,代码侵入性太强。现在采用等级解决。
    • 自己利用map再次管理bean的作用域,资源浪费且越级。现在完全交给ioc管理
    • creatBean的方法有问题,之前是缓存反射工厂的method来处理的,资源浪费和越级。现在完全交给ioc管理
  • 现在只需要专注于实现一个类就行了。
  • 且已经整合了spring的ioc了,具体整合实现很简单。请看源码地址。

利用org.apache.commons.configuration2.beanutils.BeanHelper再次重构

  • 所有的步骤都是在重复造轮子,其实都是BeanHelper的实现。
  • 核心api
public void registerBeanFactory(String name, BeanFactory factory)
public Object createBean(BeanDeclaration data, Class<?> defaultClass,  Object param)
public Object createBean(BeanDeclaration data, Class<?> defaultClass)
public Object createBean(BeanDeclaration data)

可以看到用户需要传入的就是BeanDeclaration

    String getBeanFactoryName();  //那个factory实例化

    Object getBeanFactoryParameter(); // 

    String getBeanClassName(); 

    Map<String, Object> getBeanProperties();  // 普通的属性

    Map<String, Object> getNestedBeanDeclarations();  // 嵌套的属性,这是不是ioc

    Collection<ConstructorArg> getConstructorArgs();   // 构造方法。
  • 可能有些api比较危险我们代理一下就行了。
  • apache默认的BeanDeclaration构造是无构造方法有属性,所有的工厂就是默认的工厂。
  • 这里的难点就是BeanDeclaration的构造和确定工厂。

相关文章

网友评论

      本文标题:手写框架探险系列-ioc框架的完善

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