ActionChainMaker maker = createChainMaker(config, mainModule);
/*
* 创建主模块的配置信息
*/
ActionInfo mainInfo = Loadings.createInfo(mainModule);
/*
* 准备要加载的模块列表
*/
// TODO 为什么用Set呢? 用List不是更快吗?
Set<Class<?>> modules = Loadings.scanModules(mainModule);
if (modules.isEmpty())
if (log.isWarnEnabled())
log.warn("None module classes found!!!");
boolean hasAtMethod = false;
/*
* 分析所有的子模块
*/
for (Class<?> module : modules) {
ActionInfo moduleInfo = Loadings.createInfo(module).mergeWith(mainInfo);
for (Method method : module.getMethods()) {
/*
* public 并且声明了 @At 的函数,才是入口函数
*/
if (!Modifier.isPublic(method.getModifiers())
|| !method.isAnnotationPresent(At.class))
continue;
// 增加到映射中
ActionInfo info = Loadings.createInfo(method).mergeWith(moduleInfo);
info.setViewMakers(makers);
mapping.add(maker, info, config);
hasAtMethod = true;
}
// 记录pathMap