public class AppContext extends Object
| Modifier and Type | Field and Description |
|---|---|
protected Map<Class,Function<Map,Supplier>> |
aopFnCreator
aop 函数创建器
|
protected Environment |
env
系统环境配置
|
protected EP |
ep
事件中心
initEp()} |
protected ThreadPoolExecutor |
exec
系统运行线程池.
|
protected Log |
log |
protected String |
name
系统名字.
|
protected Thread |
shutdownHook
jvm关闭钩子
|
protected Map<String,Object> |
sourceMap
服务对象源
|
protected Date |
startup
启动时间
|
| Constructor and Description |
|---|
AppContext() |
| Modifier and Type | Method and Description |
|---|---|
void |
addAopFn(Class<? extends Annotation> anno,
Function<Map,Supplier> fnCreator)
添加aop注解,及执行函数创建器
|
void |
addSource(Object source)
添加对象源
ep 会找出source对象中所有其暴露的功能. |
protected Object |
createObj(Class clz)
实例化一个对象
|
Environment |
env() |
protected void |
envConfigured() |
protected Object |
findLocalBean(EC ec,
Class beanType,
String beanName)
查找对象
|
String |
getName() |
protected Object |
info() |
protected EP |
initEp()
初始化 EP
|
protected void |
initExecutor()
初始化一个
ThreadPoolExecutor
NOTE: 如果线程池在不停的创建线程, 有可能是因为 提交的 Runnable 的异常没有被处理. |
protected void |
inject(Object o)
为bean对象中的
Resource注解字段注入对应的bean对象 |
AppContext |
setName(String name) |
void |
start()
系统启动
|
void |
stop()
系统停止
|
protected void |
updateAttr(String k,
Object v) |
protected EP |
wrapEpForSource(Object source)
为每个Source包装EP
|
protected Executor |
wrapExecForSource(Object source)
为 source 包装 Executor
|
protected Log log
protected String name
protected ThreadPoolExecutor exec
initExecutor()}protected Environment env
protected final Date startup
protected Thread shutdownHook
public void start()
public void stop()
@EL(name="sys.addSource", async=false) public void addSource(Object source)
ep 会找出source对象中所有其暴露的功能. 即: 用 @EL 标注的方法
注: 为每个对象源都配一个 name 属性标识source - 不能是一个 Class@EL(name="addAop", async=false) public void addAopFn(Class<? extends Annotation> anno, Function<Map,Supplier> fnCreator)
anno - fnCreator - @EL(name="createObj", async=false) protected Object createObj(Class clz)
clz - 类型@EL(name="inject", async=false) protected void inject(Object o)
Resource注解字段注入对应的bean对象o - @EL(name={"bean.get","sys.bean.get"}, async=false, order=1.0f) protected Object findLocalBean(EC ec, Class beanType, String beanName)
ec - beanType - bean的类型beanName - bean 名字protected EP initEp()
protected void initExecutor()
ThreadPoolExecutor
NOTE: 如果线程池在不停的创建线程, 有可能是因为 提交的 Runnable 的异常没有被处理.
see: ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Worker) 这里面当有异常抛出时 1128行代码 ThreadPoolExecutor.processWorkerExit(ThreadPoolExecutor.Worker, boolean)protected Executor wrapExecForSource(Object source)
source - Executorprotected EP wrapEpForSource(Object source)
source - EPpublic Environment env()
public AppContext setName(String name)
Copyright © 2020. All rights reserved.