java - 为运行时 spring-context 建模引用文档和渲染引擎

标签 java spring xslt velocity xdoclet

我即将为一大堆在运行时配置和组装的 spring-bean 生成引用文档。文档的基础是 javadoc。

在第一步中,我使用简单的 doclet 收集类名 <-> raw-class-documentation 的映射。

然后我启动 spring 容器并找到所有我感兴趣的 bean。

现在我想渲染文档,但我需要工具集和数据建模方面的指导。

1)实际的数据模型没有反射(reflect)我想要记录的内容,例如组件有一个规则列表,但我想显示在哪些组件中使用了规则。 我应该如何建模?听起来大致像“DisplayData”对象......

2) 最聪明的渲染方式是什么? 我考虑过 xml + xsl-stylesheet,或者可能是一些模板引擎?

3) 也许已经有一个框架来生成支持大多数内容的引用文档?

最佳答案

不久前我也做过类似的事情。我尝试简要解释一下,以便您可以决定它是否适合您的场景:

我们开始以相当标准化的方式实现业务规则。这里的总体思想是将原子规则封装在具有公共(public)签名的单个方法中:myRule(fact,executionContext)。然后,这些原子规则被分组、排序并映射到系统中的任意事件。这种设计使我们能够生成一个文档,该文档显示对哪些事件执行哪些规则以及从 javadoc 中提取的一些业务文档。

我用过QDox要遍历类,请提取 javadoc 和一些技术信息并构建模型。对于实际的文档生成,我使用了 Freemarker模板。就我而言,输出采用 html 和 mediawiki 格式。

在设计模型时,您必须记住实际文档应该是什么样子,以便在模板中您可以以简单、方便的方式使用模型。让我们举一个简单的例子:您需要一个列出所有规则的主页,然后为每个规则提供另一个页面,在其中显示一些详细信息(javadoc、签名等)以及使用该规则的所有组件。在这种情况下,您应该创建一个如下所示的模型:

class Rule {
    String javaDoc;
    ...
    List<Component> componentsUsing;
}

class Component {
    ...
}

最后,您将获得可以传递给模板引擎的规则对象列表。

关于java - 为运行时 spring-context 建模引用文档和渲染引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20289998/

相关文章:

java - 增强了(或 'for each' )循环迭代到它刚刚删除的元素 - 抛出错误

java - ElasticSearch查询不包含

java - 将主类添加到小程序

spring - REST客户端Grails Groovy无法解析类RestClientBuilder

xslt - 在 XPath/XSL 中获取子/孙子的全文

xml - XSL 模板 - 减少复制

java - 在cmd中运行基于gradle的Java应用程序时发生ClassNotFoundException

java - 如何使用@JsonIgnore仅在对象不是根对象时应用?

java - Spring表达式语言的具体使用

java - 增量/流式 XSLT 转换?