public abstract class BeanContainer extends Object
| 限定符和类型 | 字段和说明 |
|---|---|
protected Map<Class<?>,BeanBuilder<?>> |
beanBuilders
bean 构建器
|
protected Map<Class<?>,BeanExtractor<?>> |
beanExtractors
bean 提取器
|
protected Map<Class<?>,BeanInjector<?>> |
beanInjectors
bean 注入器
|
protected Map<Class<?>,InterceptorEntity> |
beanInterceptors
bean 拦截器
|
protected Map<Object,Set<Consumer<BeanWrap>>> |
beanSubscribers
bean 订阅者
|
protected Set<Consumer<BeanWrap>> |
wrapExternalConsumers
wrap 外部消费者
|
| 构造器和说明 |
|---|
BeanContainer(ClassLoader classLoader,
Props props) |
| 限定符和类型 | 方法和说明 |
|---|---|
AotCollector |
aot() |
<T extends Annotation> |
beanAroundAdd(Class<T> annoClz,
Interceptor interceptor)
添加环绕处理
|
<T extends Annotation> |
beanAroundAdd(Class<T> annoClz,
Interceptor interceptor,
int index)
添加环绕处理
|
<T extends Annotation> |
beanAroundGet(Class<T> annoClz)
获取环绕处理
|
<T extends Annotation> |
beanBuilderAdd(Class<T> annoClz,
BeanBuilder<T> builder)
添加 bean builder, injector, extractor
|
<T extends Annotation> |
beanExtractorAdd(Class<T> annoClz,
BeanExtractor<T> extractor)
添加提取处理
|
boolean |
beanExtractorHas(Class<? extends Annotation> annoClz)
是否有提取处理
|
List<BeanWrap> |
beanFind(BiPredicate<String,BeanWrap> condition)
查找bean包装
|
List<BeanWrap> |
beanFind(Predicate<BeanWrap> condition)
查找bean包装
|
void |
beanForeach(BiConsumer<String,BeanWrap> action)
遍历bean库 (拿到的是bean包装)
|
void |
beanForeach(Consumer<BeanWrap> action)
遍历bean包装库
|
void |
beanInject(VarHolder varH,
String name)
尝试变量注入 字段或参数
|
protected void |
beanInject(VarHolder varH,
String name,
boolean required,
boolean autoRefreshed) |
<T extends Annotation> |
beanInjectorAdd(Class<T> annoClz,
BeanInjector<T> injector)
添加注入处理
|
protected void |
beanInjectProperties(Class<?> clz,
Object obj) |
protected void |
beanNotice(Object nameOrType,
BeanWrap wrap)
bean 通知,偏向对内
|
void |
beanRegister(BeanWrap bw,
String name,
boolean typed)
尝试BEAN注册(按名字和类型存入容器;并进行类型映射)
|
protected void |
beanRegisterSup0(BeanWrap bw)
尝试Bean的基类注册
|
protected void |
beanSubscribe(Object nameOrType,
Consumer<BeanWrap> callback)
bean 订阅
|
Props |
cfg()
获取属性(写法上,更接近 Solon.cfg())
|
void |
clear() |
void |
copyTo(BeanContainer container)
容器能力制复到另一个容器
|
protected String |
findConfigKey(String name)
找到真实的name
|
Map<Class<?>,Object> |
getAttrs()
获取特性
|
<T> T |
getBean(Class<T> type)
获取 Bean
|
<T> T |
getBean(String name)
获取 Bean
|
<T> void |
getBeanAsync(Class<T> type,
Consumer<T> callback)
异步获取 Bean
|
<T> void |
getBeanAsync(String name,
Consumer<T> callback)
异步获取 Bean
|
<T> T |
getBeanOrNew(Class<T> type)
获取 或创建 bean
|
<T> List<T> |
getBeansOfType(Class<T> baseType)
获取某类型的 bean
|
ClassLoader |
getClassLoader()
获取类加载器
|
BeanWrap |
getWrap(Object nameOrType)
获取一个bean包装
|
void |
getWrapAsync(Object nameOrType,
Consumer<BeanWrap> callback) |
List<BeanWrap> |
getWrapsOfType(Class<?> baseType) |
boolean |
hasWrap(Object nameOrType) |
void |
putWrap(Class<?> type,
BeanWrap wrap)
存入到bean库(存入成功会进行通知)
|
void |
putWrap(String name,
BeanWrap wrap)
存入bean库(存入成功会进行通知)
|
<T> void |
subBeansOfType(Class<T> baseType,
Consumer<T> callback)
订阅某类型的 Bean
|
void |
subWrapsOfType(Class<?> baseType,
Consumer<BeanWrap> callback)
订阅某类型的 bean 包装
|
BeanWrap |
wrap(Class<?> type)
包装
|
BeanWrap |
wrap(Class<?> type,
Object bean) |
BeanWrap |
wrap(String name,
Object bean)
包装
|
BeanWrap |
wrapAndPut(Class<?> type)
包装并推入
|
BeanWrap |
wrapAndPut(Class<?> type,
Object bean)
包装并推入
|
protected abstract BeanWrap |
wrapCreate(Class<?> type,
Object bean,
String name) |
protected void |
wrapExternalSubscribe(Consumer<BeanWrap> callback)
wrap 外部订阅
|
protected void |
wrapPublish(BeanWrap wrap)
wrap 发布,偏向对外 (只支持 @Bean 和 @Component 的 wrap)
|
protected final Map<Class<?>,BeanBuilder<?>> beanBuilders
protected final Map<Class<?>,BeanInjector<?>> beanInjectors
protected final Map<Class<?>,BeanExtractor<?>> beanExtractors
protected final Map<Class<?>,InterceptorEntity> beanInterceptors
public BeanContainer(ClassLoader classLoader, Props props)
public Props cfg()
public AotCollector aot()
public ClassLoader getClassLoader()
public void clear()
public void copyTo(BeanContainer container)
public <T extends Annotation> void beanBuilderAdd(Class<T> annoClz, BeanBuilder<T> builder)
public <T extends Annotation> void beanInjectorAdd(Class<T> annoClz, BeanInjector<T> injector)
public <T extends Annotation> void beanExtractorAdd(Class<T> annoClz, BeanExtractor<T> extractor)
public boolean beanExtractorHas(Class<? extends Annotation> annoClz)
public <T extends Annotation> void beanAroundAdd(Class<T> annoClz, Interceptor interceptor, int index)
index - 执行顺序public <T extends Annotation> void beanAroundAdd(Class<T> annoClz, Interceptor interceptor)
public <T extends Annotation> InterceptorEntity beanAroundGet(Class<T> annoClz)
protected void wrapPublish(BeanWrap wrap)
public void putWrap(String name, BeanWrap wrap)
wrap - 如果raw为null,拒绝注册public void putWrap(Class<?> type, BeanWrap wrap)
wrap - 如果raw为null,拒绝注册public boolean hasWrap(Object nameOrType)
public void subWrapsOfType(Class<?> baseType, Consumer<BeanWrap> callback)
baseType - 基类public <T> T getBean(String name)
name - 名字public <T> T getBean(Class<T> type)
type - 类型public <T> T getBeanOrNew(Class<T> type)
type - 类型public <T> void getBeanAsync(String name, Consumer<T> callback)
name - 名字public <T> void getBeanAsync(Class<T> type, Consumer<T> callback)
type - 类型public <T> void subBeansOfType(Class<T> baseType, Consumer<T> callback)
baseType - 基类public void beanRegister(BeanWrap bw, String name, boolean typed)
protected void beanRegisterSup0(BeanWrap bw)
public void beanInject(VarHolder varH, String name)
varH - 变量包装器name - 名字(bean name || config ${name})protected void beanInject(VarHolder varH, String name, boolean required, boolean autoRefreshed)
protected String findConfigKey(String name)
name - 原始name,${a:${b:3}}public void beanForeach(BiConsumer<String,BeanWrap> action)
public List<BeanWrap> beanFind(BiPredicate<String,BeanWrap> condition)
Copyright © 2023. All rights reserved.