• flying中的AOP和IOC


    注入属性:
    private synchronized void injectReferenceServices() {
     if(this.injectReferenceServicesInitialized) return;
     PropertyDescriptor[] pds = PropertyUtils.getPropertyDescriptors(this.serviceClass);
     if(pds == null) return;
     for(PropertyDescriptor pd: pds) {
      Class<?> type = pd.getPropertyType();
      if(type == null) continue;
      if(type.getName().startsWith("java") || type.getName().startsWith("org"))  continue;
      if(module.getModuleConfig().getServiceConfigs().containsKey(type.getName())) {
       try {
        pd.getWriteMethod().invoke(this.serviceObject, new Object[]{module.getService(type)});
        logger.debug(this.serviceClass.getName()+" injectReferenceService ‘"+pd.getName()+"’success!");
       } catch (Exception e) {
        logger.error(this.serviceClass.getName()+" injectReferenceService ‘"+pd.getName()+"’失败,可能导致部分功能无法正常使用!", e);
       }
      }
     }
     this.injectReferenceServicesInitialized = true;
    }

    服务调用拦截:
    public Object intercept(Object service, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
      。。。。。。。。。。。
       //
       if(!injectReferenceServicesInitialized) {
        this.injectReferenceServices();
       }
                        。。。。。。。
    }
    如似乎,一个不太完美的IOC实现了。

  • 相关阅读:
    python笔记第十一天 模块补充
    python笔记第十天 模块
    python笔记第九天 装饰器
    python笔记第八天 迭代器与生成器
    python笔记第七天 文件操作
    python笔记第六天 函数和函数的内置方法
    C语言----指针形参(指向指针的指针形参)
    NEON使用方法
    ARM NEON指令集总结
    三维变换矩阵左乘和右乘分析
  • 原文地址:https://www.cnblogs.com/hifong/p/5831796.html
Copyright © 2020-2023  润新知