模块 org.redkale

类 ResourceFactory


  • public final class ResourceFactory
    extends Object
    依赖注入功能主类
    如果@Resource(name = "@") 表示资源name采用所属对象的name
    如果没有@Resource且对象实现了Resourcable, 则会取对象的resourceName()方法值
     name规则:
        1: "@"有特殊含义, 表示资源本身,"@"不能单独使用
        2: "#name"、"#type"有特殊含义
        3: 只能是字母、数字、(短横)-、(下划线)_、点(.)的组合
     

    详情见: https://redkale.org

    作者:
    zhangjx
    • 方法概要

      所有方法 静态方法 实例方法 具体方法 
      修饰符和类型 方法 说明
      static void checkResourceName​(String name)
      检查资源名是否合法
      <A> boolean contains​(boolean recursive, String name, Class<? extends A> clazz)
      判断是否包含指定资源名和资源类型的资源对象
      static ResourceFactory create()
      创建一个根ResourceFactory
      ResourceFactory createChild()
      创建ResourceFactory子节点
      <A> A find​(Class<? extends A> clazz)
      找指定类型对应的资源对象
      <A> A find​(Type clazz)
      找指定类型对应的资源对象
      <A> A find​(String name, Class<? extends A> clazz)
      找指定类型和资源名对应的资源对象
      <A> A find​(String name, Type clazz)
      找指定类型和资源名对应的资源对象
      <A> A findChild​(String name, Class<? extends A> clazz)
      找指定类型或子类型和资源名对应的资源对象
      <A extends Annotation>
      ResourceAnnotationLoader<A>
      findResourceAnnotationLoader​(Class<A> clazz)
      获取类型对应的ResourceAnnotationLoader
      ResourceFactory findResourceFactory​(String name, Type clazz)
      查找指定资源名和资源类型的资源对象所在的ResourceFactory, 没有则返回null
      ResourceTypeLoader findResourceTypeLoader​(Type clazz)
      获取类型对应的ResourceTypeLoader
      ResourceTypeLoader findResourceTypeLoader​(Type ft, Field field)
      获取类型对应的ResourceTypeLoader
      优先匹配Type, 再匹配Class,再匹配父类
      List<ResourceFactory> getChildren()
      获取所有ResourceFactory子节点
      static String getResourceName​(String name)
      替换资源名中含${xxx}或{system.property.xxx}的配置项
      static String getResourceName​(String parent, String name)
      替换资源名中含${xxx}或{system.property.xxx}的配置项
      static Class getResourceType​(Type type)
      获取资源的注入类型,class存在ResourceType注解的优先用ResourceType.value, 没有则使用type本身的class
      boolean inject​(Object srcObj)
      注入资源对象
      boolean inject​(Object srcObj, BiConsumer<Object,​Field> consumer)
      注入资源对象
      <T> boolean inject​(Object srcObj, T attachment)
      注入资源对象
      <T> boolean inject​(Object srcObj, T attachment, BiConsumer<Object,​Field> consumer)
      注入资源对象
      boolean inject​(String srcResourceName, Object srcObj)
      注入资源对象
      boolean inject​(String srcResourceName, Object srcObj, BiConsumer<Object,​Field> consumer)
      注入资源对象
      <T> boolean inject​(String srcResourceName, Object srcObj, T attachment)
      注入资源对象
      <T> boolean inject​(String srcResourceName, Object srcObj, T attachment, BiConsumer<Object,​Field> consumer)
      注入资源对象
      <A> A load​(Class<A> clazz)
      加载资源对象, 没有返回null
      <A> A load​(Type clazz)
      加载资源对象, 没有返回null
      <A> A load​(String name, Class<A> clazz)
      加载资源对象, 没有返回null
      <A> A load​(String name, Type clazz)
      加载资源对象, 没有返回null
      void lock()
      inject时的锁
      <A> List<A> query​(Class<? extends A> clazz)
      获取指定类型的资源对象
      <A> List<A> query​(Type clazz)
      获取指定类型的资源对象
      <A> List<A> query​(BiPredicate<String,​Object> predicate)
      获取符合过滤条件的资源对象
      <A> A register​(boolean autoSync, A rs)
      将对象以name=""注入到资源池中,并同步已被注入的资源
      <A> A register​(boolean autoSync, Class<? extends A> clazz, A rs)
      将对象指定类型且name=""注入到资源池中
      void register​(boolean autoSync, String name, boolean value)
      将boolean对象以指定资源名注入到资源池中
      void register​(boolean autoSync, String name, byte value)
      将byte对象以指定资源名注入到资源池中
      void register​(boolean autoSync, String name, double value)
      将double对象以指定资源名注入到资源池中
      void register​(boolean autoSync, String name, float value)
      将float对象以指定资源名注入到资源池中
      void register​(boolean autoSync, String name, int value)
      将int对象以指定资源名注入到资源池中
      void register​(boolean autoSync, String name, long value)
      将long对象以指定资源名注入到资源池中
      void register​(boolean autoSync, String name, short value)
      将short对象以指定资源名注入到资源池中
      <A> A register​(boolean autoSync, String name, A val)
      将对象以指定资源名注入到资源池中
      <A> A register​(boolean autoSync, String name, Type clazz, A val)
      将对象以指定资源名和类型注入到资源池中
      <A> A register​(A rs)
      将对象以name=""注入到资源池中,并同步已被注入的资源
      <A> A register​(Class<? extends A> clazz, A rs)
      将对象指定类型且name=""注入到资源池中,并同步已被注入的资源
      void register​(String name, boolean value)
      将boolean对象以指定资源名注入到资源池中,并同步已被注入的资源
      void register​(String name, byte value)
      将byte对象以指定资源名注入到资源池中,并同步已被注入的资源
      void register​(String name, double value)
      将double对象以指定资源名注入到资源池中,并同步已被注入的资源
      void register​(String name, float value)
      将float对象以指定资源名注入到资源池中,并同步已被注入的资源
      void register​(String name, int value)
      将int对象以指定资源名注入到资源池中,并同步已被注入的资源
      void register​(String name, long value)
      将long对象以指定资源名注入到资源池中,并同步已被注入的资源
      void register​(String name, short value)
      将short对象以指定资源名注入到资源池中,并同步已被注入的资源
      <A> A register​(String name, A val)
      将对象以指定资源名注入到资源池中,并同步已被注入的资源
      <A> A register​(String name, Class<? extends A> clazz, A val)
      将对象以指定资源名和类型注入到资源池中,并同步已被注入的资源
      <A> A register​(String name, Type clazz, A val)
      将对象以指定资源名和类型注入到资源池中,并同步已被注入的资源
      void register​(Properties properties)
      将多个以指定资源名的String对象注入到资源池中
      <A> void register​(Properties properties, String environmentName, Class<A> environmentType)
      将多个以指定资源名的String对象注入到资源池中
      <T extends Annotation>
      void
      register​(ResourceAnnotationLoader<T> loader)
      注册 ResourceAnnotationLoader
      void register​(ResourceTypeLoader loader)
      注册 ResourceTypeLoader
      int registerConfiguration​(Class configuareClass)
      注册Configuration配置类
      void release()
      清空当前已注入资源的缓存
      void unlock()
      inject时的锁
    • 方法详细资料

      • create

        public static ResourceFactory create()
        创建一个根ResourceFactory
        返回:
        ResourceFactory
      • createChild

        public ResourceFactory createChild()
        创建ResourceFactory子节点
        返回:
        ResourceFactory
      • getChildren

        public List<ResourceFactory> getChildren()
        获取所有ResourceFactory子节点
        返回:
        List
      • release

        public void release()
        清空当前已注入资源的缓存
      • lock

        public void lock()
        inject时的锁
      • unlock

        public void unlock()
        inject时的锁
      • checkResourceName

        public static void checkResourceName​(String name)
        检查资源名是否合法
         name规则:
            1: "@"有特殊含义, 表示资源本身,"@"不能单独使用
            2: "#name"、"#type"有特殊含义
            3: 只能是字母、数字、(短横)-、(下划线)_、点(.)的组合
         
        参数:
        name - String
      • getResourceType

        public static Class getResourceType​(Type type)
        获取资源的注入类型,class存在ResourceType注解的优先用ResourceType.value, 没有则使用type本身的class
        参数:
        type - 资源类型
        返回:
        注入的Type
      • getResourceName

        public static String getResourceName​(String name)
        替换资源名中含${xxx}或{system.property.xxx}的配置项
        参数:
        name - 资源名
        返回:
        不包含配置项的资源名
      • getResourceName

        public static String getResourceName​(String parent,
                                             String name)
        替换资源名中含${xxx}或{system.property.xxx}的配置项
        参数:
        parent - 父资源名
        name - 资源名
        返回:
        不包含配置项的资源名
      • register

        public <A> A register​(Class<? extends A> clazz,
                              A rs)
        将对象指定类型且name=""注入到资源池中,并同步已被注入的资源
        类型参数:
        A - 泛型
        参数:
        clazz - 资源类型
        rs - 资源对象
        返回:
        旧资源对象
      • register

        public <A> A register​(boolean autoSync,
                              Class<? extends A> clazz,
                              A rs)
        将对象指定类型且name=""注入到资源池中
        类型参数:
        A - 泛型
        参数:
        autoSync - 是否同步已被注入的资源
        clazz - 资源类型
        rs - 资源对象
        返回:
        旧资源对象
      • register

        public <A> A register​(A rs)
        将对象以name=""注入到资源池中,并同步已被注入的资源
        类型参数:
        A - 泛型
        参数:
        rs - 资源对象
        返回:
        旧资源对象
      • register

        public <A> A register​(boolean autoSync,
                              A rs)
        将对象以name=""注入到资源池中,并同步已被注入的资源
        类型参数:
        A - 泛型
        参数:
        autoSync - 是否同步已被注入的资源
        rs - 资源对象
        返回:
        旧资源对象
      • register

        public void register​(String name,
                             boolean value)
        将boolean对象以指定资源名注入到资源池中,并同步已被注入的资源
        参数:
        name - 资源名
        value - 资源值
      • register

        public void register​(boolean autoSync,
                             String name,
                             boolean value)
        将boolean对象以指定资源名注入到资源池中
        参数:
        autoSync - 是否同步已被注入的资源
        name - 资源名
        value - 资源值
      • register

        public void register​(String name,
                             byte value)
        将byte对象以指定资源名注入到资源池中,并同步已被注入的资源
        参数:
        name - 资源名
        value - 资源值
      • register

        public void register​(boolean autoSync,
                             String name,
                             byte value)
        将byte对象以指定资源名注入到资源池中
        参数:
        autoSync - 是否同步已被注入的资源
        name - 资源名
        value - 资源值
      • register

        public void register​(String name,
                             short value)
        将short对象以指定资源名注入到资源池中,并同步已被注入的资源
        参数:
        name - 资源名
        value - 资源值
      • register

        public void register​(boolean autoSync,
                             String name,
                             short value)
        将short对象以指定资源名注入到资源池中
        参数:
        autoSync - 是否同步已被注入的资源
        name - 资源名
        value - 资源值
      • register

        public void register​(String name,
                             int value)
        将int对象以指定资源名注入到资源池中,并同步已被注入的资源
        参数:
        name - 资源名
        value - 资源值
      • register

        public void register​(boolean autoSync,
                             String name,
                             int value)
        将int对象以指定资源名注入到资源池中
        参数:
        autoSync - 是否同步已被注入的资源
        name - 资源名
        value - 资源值
      • register

        public void register​(String name,
                             float value)
        将float对象以指定资源名注入到资源池中,并同步已被注入的资源
        参数:
        name - 资源名
        value - 资源值
      • register

        public void register​(boolean autoSync,
                             String name,
                             float value)
        将float对象以指定资源名注入到资源池中
        参数:
        autoSync - 是否同步已被注入的资源
        name - 资源名
        value - 资源值
      • register

        public void register​(String name,
                             long value)
        将long对象以指定资源名注入到资源池中,并同步已被注入的资源
        参数:
        name - 资源名
        value - 资源值
      • register

        public void register​(boolean autoSync,
                             String name,
                             long value)
        将long对象以指定资源名注入到资源池中
        参数:
        autoSync - 是否同步已被注入的资源
        name - 资源名
        value - 资源值
      • register

        public void register​(String name,
                             double value)
        将double对象以指定资源名注入到资源池中,并同步已被注入的资源
        参数:
        name - 资源名
        value - 资源值
      • register

        public void register​(boolean autoSync,
                             String name,
                             double value)
        将double对象以指定资源名注入到资源池中
        参数:
        autoSync - 是否同步已被注入的资源
        name - 资源名
        value - 资源值
      • register

        public <A> A register​(String name,
                              @Nonnull
                              A val)
        将对象以指定资源名注入到资源池中,并同步已被注入的资源
        类型参数:
        A - 泛型
        参数:
        name - 资源名
        val - 资源对象
        返回:
        旧资源对象
      • register

        public <A> A register​(boolean autoSync,
                              String name,
                              @Nonnull
                              A val)
        将对象以指定资源名注入到资源池中
        类型参数:
        A - 泛型
        参数:
        autoSync - 是否同步已被注入的资源
        name - 资源名
        val - 资源对象
        返回:
        旧资源对象
      • register

        public <A> A register​(String name,
                              Class<? extends A> clazz,
                              @Nullable
                              A val)
        将对象以指定资源名和类型注入到资源池中,并同步已被注入的资源
        类型参数:
        A - 泛型
        参数:
        name - 资源名
        clazz - 资源类型
        val - 资源对象
        返回:
        旧资源对象
      • register

        public <A> A register​(String name,
                              Type clazz,
                              @Nullable
                              A val)
        将对象以指定资源名和类型注入到资源池中,并同步已被注入的资源
        类型参数:
        A - 泛型
        参数:
        name - 资源名
        clazz - 资源类型
        val - 资源对象
        返回:
        旧资源对象
      • register

        public <A> A register​(boolean autoSync,
                              String name,
                              Type clazz,
                              A val)
        将对象以指定资源名和类型注入到资源池中
        类型参数:
        A - 泛型
        参数:
        autoSync - 是否同步已被注入的资源
        name - 资源名
        clazz - 资源类型
        val - 资源对象
        返回:
        旧资源对象
      • register

        public void register​(Properties properties)
        将多个以指定资源名的String对象注入到资源池中
        参数:
        properties - 资源键值对
      • register

        public <A> void register​(Properties properties,
                                 String environmentName,
                                 Class<A> environmentType)
        将多个以指定资源名的String对象注入到资源池中
        类型参数:
        A - 泛型
        参数:
        properties - 资源键值对
        environmentName - 额外的资源名
        environmentType - 额外的类名
      • register

        public <T extends Annotation> void register​(ResourceAnnotationLoader<T> loader)
        注册 ResourceAnnotationLoader
        类型参数:
        T - 注解泛型
        参数:
        loader - ResourceAnnotationLoader
      • register

        public void register​(ResourceTypeLoader loader)
        注册 ResourceTypeLoader
        参数:
        loader - ResourceTypeLoader
      • registerConfiguration

        public int registerConfiguration​(Class configuareClass)
        注册Configuration配置类
        参数:
        configuareClass - 标记Configuration的类
        返回:
        方法数
      • contains

        public <A> boolean contains​(boolean recursive,
                                    String name,
                                    Class<? extends A> clazz)
        判断是否包含指定资源名和资源类型的资源对象
        类型参数:
        A - 泛型
        参数:
        recursive - 是否遍历父节点
        name - 资源名
        clazz - 资源类型
        返回:
        是否存在
      • findResourceFactory

        public ResourceFactory findResourceFactory​(String name,
                                                   Type clazz)
        查找指定资源名和资源类型的资源对象所在的ResourceFactory, 没有则返回null
        参数:
        name - 资源名
        clazz - 资源类型
        返回:
        ResourceFactory
      • findResourceAnnotationLoader

        public <A extends AnnotationResourceAnnotationLoader<A> findResourceAnnotationLoader​(Class<A> clazz)
        获取类型对应的ResourceAnnotationLoader
        类型参数:
        A - 泛型
        参数:
        clazz - 类型
        返回:
        ResourceAnnotationLoader
      • findResourceTypeLoader

        public ResourceTypeLoader findResourceTypeLoader​(Type clazz)
        获取类型对应的ResourceTypeLoader
        参数:
        clazz - 类型
        返回:
        ResourceTypeLoader
      • findResourceTypeLoader

        public ResourceTypeLoader findResourceTypeLoader​(Type ft,
                                                         @Nullable
                                                         Field field)
        获取类型对应的ResourceTypeLoader
        优先匹配Type, 再匹配Class,再匹配父类
        参数:
        ft - 类型
        field - 字段
        返回:
        ResourceTypeLoader
      • find

        public <A> A find​(Class<? extends A> clazz)
        找指定类型对应的资源对象
        类型参数:
        A - 泛型
        参数:
        clazz - 资源类型
        返回:
        资源对象
      • find

        public <A> A find​(String name,
                          Class<? extends A> clazz)
        找指定类型和资源名对应的资源对象
        类型参数:
        A - 泛型
        参数:
        name - 资源名
        clazz - 资源类型
        返回:
        资源对象
      • find

        public <A> A find​(Type clazz)
        找指定类型对应的资源对象
        类型参数:
        A - 泛型
        参数:
        clazz - 资源类型
        返回:
        资源对象
      • find

        public <A> A find​(String name,
                          Type clazz)
        找指定类型和资源名对应的资源对象
        类型参数:
        A - 泛型
        参数:
        name - 资源名
        clazz - 资源类型
        返回:
        资源对象
      • findChild

        public <A> A findChild​(String name,
                               Class<? extends A> clazz)
        找指定类型或子类型和资源名对应的资源对象
        类型参数:
        A - 泛型
        参数:
        name - 资源名
        clazz - 资源类型
        返回:
        资源对象
      • load

        public <A> A load​(Class<A> clazz)
        加载资源对象, 没有返回null
        类型参数:
        A - 泛型
        参数:
        clazz - 资源类型
        返回:
        资源对象
        从以下版本开始:
        2.8.0
      • load

        public <A> A load​(String name,
                          Class<A> clazz)
        加载资源对象, 没有返回null
        类型参数:
        A - 泛型
        参数:
        name - 资源名
        clazz - 资源类型
        返回:
        资源对象
        从以下版本开始:
        2.8.0
      • load

        public <A> A load​(Type clazz)
        加载资源对象, 没有返回null
        类型参数:
        A - 泛型
        参数:
        clazz - 资源类型
        返回:
        资源对象
        从以下版本开始:
        2.8.0
      • load

        public <A> A load​(String name,
                          Type clazz)
        加载资源对象, 没有返回null
        类型参数:
        A - 泛型
        参数:
        name - 资源名
        clazz - 资源类型
        返回:
        资源对象
        从以下版本开始:
        2.8.0
      • query

        public <A> List<A> query​(Class<? extends A> clazz)
        获取指定类型的资源对象
        类型参数:
        A - 泛型
        参数:
        clazz - 资源类型
        返回:
        资源集合
      • query

        public <A> List<A> query​(Type clazz)
        获取指定类型的资源对象
        类型参数:
        A - 泛型
        参数:
        clazz - 资源类型
        返回:
        资源集合
      • query

        public <A> List<A> query​(BiPredicate<String,​Object> predicate)
        获取符合过滤条件的资源对象
        类型参数:
        A - 泛型
        参数:
        predicate - 资源过滤条件
        返回:
        资源集合
      • inject

        public boolean inject​(Object srcObj)
        注入资源对象
        参数:
        srcObj - 资源依附对象
        返回:
        是否成功注入
      • inject

        public <T> boolean inject​(Object srcObj,
                                  T attachment)
        注入资源对象
        类型参数:
        T - 泛型
        参数:
        srcObj - 资源依附对象
        attachment - 附加对象
        返回:
        是否成功注入
      • inject

        public boolean inject​(Object srcObj,
                              BiConsumer<Object,​Field> consumer)
        注入资源对象
        参数:
        srcObj - 资源依附对象
        consumer - 字段处理函数
        返回:
        是否成功注入
      • inject

        public <T> boolean inject​(Object srcObj,
                                  T attachment,
                                  BiConsumer<Object,​Field> consumer)
        注入资源对象
        类型参数:
        T - 泛型
        参数:
        srcObj - 资源依附对象
        attachment - 附加对象
        consumer - 字段处理函数
        返回:
        是否成功注入
      • inject

        public boolean inject​(String srcResourceName,
                              Object srcObj)
        注入资源对象
        参数:
        srcResourceName - 依附对象的资源名
        srcObj - 资源依附对象
        返回:
        是否成功注入
      • inject

        public <T> boolean inject​(String srcResourceName,
                                  Object srcObj,
                                  T attachment)
        注入资源对象
        类型参数:
        T - 泛型
        参数:
        srcResourceName - 依附对象的资源名
        srcObj - 资源依附对象
        attachment - 附加对象
        返回:
        是否成功注入
      • inject

        public boolean inject​(String srcResourceName,
                              Object srcObj,
                              BiConsumer<Object,​Field> consumer)
        注入资源对象
        参数:
        srcResourceName - 依附对象的资源名
        srcObj - 资源依附对象
        consumer - 字段处理函数
        返回:
        是否成功注入
      • inject

        public <T> boolean inject​(String srcResourceName,
                                  Object srcObj,
                                  T attachment,
                                  BiConsumer<Object,​Field> consumer)
        注入资源对象
        类型参数:
        T - 泛型
        参数:
        srcResourceName - 依附对象的资源名
        srcObj - 资源依附对象
        attachment - 附加对象
        consumer - 字段处理函数
        返回:
        是否成功注入