- java.lang.Object
-
- org.redkale.inject.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()
创建一个根ResourceFactoryResourceFactory
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)
获取类型对应的ResourceAnnotationLoaderResourceFactory
findResourceFactory(String name, Type clazz)
查找指定资源名和资源类型的资源对象所在的ResourceFactory, 没有则返回nullResourceTypeLoader
findResourceTypeLoader(Type clazz)
获取类型对应的ResourceTypeLoaderResourceTypeLoader
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本身的classboolean
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)
加载资源对象, 没有返回nullvoid
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>
voidregister(ResourceAnnotationLoader<T> loader)
注册 ResourceAnnotationLoadervoid
register(ResourceTypeLoader loader)
注册 ResourceTypeLoaderint
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 Annotation> ResourceAnnotationLoader<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(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
- 字段处理函数- 返回:
- 是否成功注入
-
-