coderstory
V2EX  ›  Java

Java 有没有优雅的办法生成类代码

  •  
  •   coderstory ·
    coderstory · Jul 28, 2021 · 4152 views
    This topic created in 1934 days ago, the information mentioned may be changed or developed.

    现在有个 OA 系统,包含一套流程设计,比如可以设计一个请假流程,包含基本的节点,连接线,条件,switch 等功能。包含了访问数据库,访问 URL 等能力。

    现在有个需求,设计好对的流程,不通过内置的简单版的流程引擎执行。而是需要把设计好的流程转成对应的 java 实现,也就是生成流程设计对应的 java 文件。最终流程执行的是 java 文件生成的 class 文件。

    现在碰到了第一个问题,如何优化的生成流程对应的类。不知都有没有什么设计模式或者什么插件,可以快速方便的生成流程的 java 源码. 如果直接使用字符串拼接的方式,我感觉会有点凌乱,出问题了也不好处理,也不灵活。写出来的代码估计自己都看不懂。

    谢过各位大佬了。

    19 replies  •  2021-08-03 20:49:37 +08:00
    a22271001
    a22271001
    Jul 28, 2021
    1
    用模板引擎,比如 freemark
    securityCoding
    securityCoding
    Jul 28, 2021
    2
    模版引擎? Velocity 、Thymeleaf 看看这两个
    GuuJiang
    GuuJiang
    Jul 28, 2021 via iPhone
    3
    我相信你需要的是 CodeModel,你生成的是 AST,它负责输出代码,完全满足你的要求
    Brentwans
    Brentwans
    Jul 28, 2021
    4
    一定要生成代码才能解决吗?生成的代码可不好维护呀
    ic2y
    ic2y
    Jul 28, 2021
    5
    @coderstory 感觉跟这个比较相关; https://gitee.com/mirrors/compileflow
    sheeta
    sheeta
    Jul 28, 2021
    6
    建议使用流程引擎
    pigbug
    pigbug
    Jul 28, 2021
    7
    我看了一下 另类的 spring boot 代码生成。github.com/spring-io/start.spring.io
    wsxyeah
    wsxyeah
    Jul 28, 2021 via iPhone
    8
    javapoet
    zoharSoul
    zoharSoul
    Jul 28, 2021
    9
    square 有一个 JavaPoet
    e583409
    e583409
    Jul 28, 2021
    10
    @wsxyeah 这个很厉害 回头研究一下 一些业务代码就可以 自动生成了
    jack778
    jack778
    Jul 28, 2021
    11
    天呐,一个流程就几个类,一百个流程几百个类? 确认不考虑维护成本吗
    coderstory
    coderstory
    OP
    Jul 28, 2021
    12
    @jack778 流程设计还是单独保存的。。。每次修改重新生成
    coderstory
    coderstory
    OP
    Jul 28, 2021❤️1
    13
    @sheeta 都说了本身就有引擎。。。。但人家不要
    coderstory
    coderstory
    OP
    Jul 28, 2021
    14
    @Brentwans 那就不关我们部门的事情了 哈哈哈
    coderstory
    coderstory
    OP
    Jul 28, 2021
    15
    @GuuJiang 啧啧 这个东西的确不错 就是原项目已经弃坑了 还好还有人 fork 出来重新维护
    dallaslu
    dallaslu
    Jul 28, 2021
    16
    与其如此,不如设计一个流程描述文件,写个通用类去解析、执行流程。
    Cbdy
    Cbdy
    Jul 29, 2021 via Android
    17
    建议不要生成类,而是直接生成字节码,生成类的话可能会不小心改坏掉,而且每次重新生成会产生大量代码变动,不利于维护
    hdfg159
    hdfg159
    Jul 31, 2021 via Android
    18
    groovy 语言,生成脚本,动态执行
    liian2019
    liian2019
    Aug 3, 2021
    19
    javapoet + asm
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1122 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 18:28 · PVG 02:28 · LAX 10:28 · JFK 13:28
    ♥ Do have faith in what you're doing.