深入了解帆软报表系统的启动过程二
前面说到MainDesigner的main方法中通过ModuleContext来加载解析designer-startup.xml的。
下面详细说说具体过程。
1 ModuleContext位于fine-core.jar包下,com.fr.module.ModuleContext,看一下它的parseRoot方法
public static synchronized Module parseRoot(String var0) {assert StringUtils.isNotBlank(var0) && !var0.contains("..");var0 = "/com/fr/config/starter/" + var0;Module var1 = FineModuleParser.parse(var0);ModuleContext.ModuleAccessor.init(var1);return var1;}
这里看到实际的解析是由FineModuleParser来完成的。
2 com.fr.module.engine.build.FineModuleParser的parse方法:
public static Module parse(String var0) {ModuleConfig var1 = ModuleConfigFactory.create().downParse(var0);return var1 == null ? null : ModuleBuilder.build(var1);}
可以看到将配置文件的内容封装到ModuleConfig对象中了。然后使用ModuleBuilder来build模块.
3 com.fr.module.engine.build.ModuleBuil
深入了解帆软报表系统的启动过程二相关推荐
- 深入了解帆软报表系统的启动过程-总结
通过前面的介绍,我们知道了帆软报表启动时是通过加载designer-startup.xml配置文件,创建Activator,Module来完成帆软报表的功能. 帆软报表将功能分配到各种Activato ...
- 深入了解帆软报表系统的启动过程三
sss现在介绍下Module,Activator,Context这三者的关联. 1 com.fr.module.Context,简单理解就是上下文.先看看它的源码 public abstract cl ...
- 深入了解帆软报表系统的启动过程一
1 帆软报表的启动类为:com.fr.learn.Learner,它的main方法如下: public static void main(String[] args) {try {Class main ...
- 昇兴集团:搭建帆软报表系统,打破数据孤岛,工作效率提升5倍
注:本文为帆软2021数据生产力大赛参赛案例,未经授权禁止转载. 1.企业简介 昇兴集团股份有限公司坐落于具有我国工业摇篮著称的福州马尾区.公司始创于1992年,自成立以来,始终用专业严谨的态度从事食 ...
- 简单梳理帆软报表即决策系统的登录步骤 一
以帆软fineReport为例,它本质上是一个Web项目,自然少不了相关的servlet,filter等相关概念. 第一步:一个要求登录的请求当没有登录时,如果重定向到登录请求的. 帆软报表里的每个请 ...
- 若依前后端分离+帆软报表 快速建立网站及后台管理功能
若依前后端分离+帆软报表 快速建立网站及后台管理功能 架构 1.后台管理:若依作为后台管理框架,使用它自带的用户,角色,组织架构管理模块,在此基础上通过代码生成功能二次开发增加业务模块:使用帆软报表快 ...
- 【FineReport】帆软报表平台的安装与连接 SAP HANA 数据库
[FineReport]帆软报表平台的安装与连接 SAP HANA 数据库 1.下载帆软 2.安装软件 3.连接HANA 4.访问数据 1.下载帆软 (1)帆软最新版本软件下载地址:https://w ...
- finereport 格式化金额函数_帆软报表(finereport)常用函数
帆软报表FineReport中数据连接之Websphere配置JNDI连接 以oracle9i数据源制作的模板jndi.cpt为例来说明如何在FineReport中的Websphere配置JNDI连接 ...
- 帆软报表调用python脚本_帆软报表(finereport)实现自动滚屏效果
例如Demo:IOS平台年度数据报表. 展示内容丰富,一个页面中存在多个图表.内容,超出了浏览器窗口的大小导致内容展示不全. 为了能够预览这个报表的全部内容,可以使用JS滚屏效果来实现. 操作步骤: ...
最新文章
- Bootstrap树控件(Tree控件组件)使用经验分享
- 操作系统 课堂练习题01【15道 经典题目】
- linux下开发python爬虫_linux入门教程—开发常用命令
- 容器学习 之 容器的网络类型(十二)
- NULL、nil、Nil、NSNull的区别
- socket选项: SO_REUSEADDR, SO_RCVBUF, SO_SNDBUF
- 【2016年第1期】山东省农业大数据发展刍议
- 【题解】Luogu P5360 [SDOI2019]世界地图
- Vuex和普通全局对象
- 大数据_MapperReduce_Hbase相关面试题_补充说明---Hbase工作笔记0030
- matlab 命令打开ANSYS,matlab如何调用ansys
- QDir中mkdir和mkpath的区别
- vuetify-icon图标显示不正常
- win7上搭建ftp站点
- matlab kappa风险分析,我为什么反对在属性数据MSA中用Kappa分析(上) | 汽车质量管理笔记...
- 14、系统架构师指南 - 软件项目角色指南系列文章
- Modern PHP读书笔记一
- Win32的时间类型
- latext 开根号_LaTeX常用篇(二)---上下标/分式/根式/求和/连乘/极限/积分/希腊字母...
- 【智能制造】首钢智造的理论探索与实践
热门文章
- ssis 包配置组织程序_如何停止失控的SSIS程序包
- 在SQL Server中的数据库之间复制表的六种不同方法
- ssis组件_使用SSIS Hadoop组件连接到Apache Hive和Apache Pig
- 如何使用SQL Server配置管理器
- 查看端口占用情况lsof,并关闭对应进程kill
- react native在static中使用this方法
- Unity教程之-Unity Attribute的使用总结
- 开发落网电台windows phone 8应用的计划(10)-----收尾
- python知识点2--正则表达式【转载】
- bzoj3601 一个人的数论 (拉格朗日插值求系数)