zoukankan      html  css  js  c++  java
  • 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实现了。

  • 相关阅读:
    每天一个linux命令
    Python 面向对象-下篇
    Python 面向对象-上篇
    何时会发生隐式类型转换
    C++类型检查
    无符号保留原则
    bool类型为什么可以当做int
    在类的外部定义成员函数注意形式
    局部类
    命名规范
  • 原文地址:https://www.cnblogs.com/hifong/p/5831796.html
Copyright © 2011-2022 走看看