通过以上的原理,你应该能设计出自己的DSL了,通过DSL可以设计出非常简洁的API给用户,在执行的时候调用DSL内部的复杂功能,这些功能的背后逻辑隐藏在了自己编写的Delegate中。 为了加深理解,我写了个开源项目,把上面知识点串起来,构建了一个较完整的DSL流程,如果还有什么不懂的地方,欢迎留言交流。 项目地址:https://g
实战Groovy: Groovy:Java 程序员的 DSLScott Davis
Groovy DSL是Java DSL的包装器和扩展。 我们在这里追求的主要目标是使Groovy上的Spring Integration开发尽可能顺利和直接,并与现有的Java DSL和一些Groovy扩展或特定于语言的结构进行互操作性。 该实现是Groovy支持模块的一部分。 您只需要导入一个包含 Groovy DSL 重载工厂方法的类。
首先来理解 DSL。 DSL(Domain Specific Language)指的是一定应用领域内的计算机语言,它可以不强大,它可以只能在一定的领域内生效(和 GPL 相比,GPL 是 General Purpose Language),表达仅限于该领域,但是它对于特定领域简洁、清晰,包含针对特定领域的优化。 当我们面对各种各样的特定需求的时候,一个通用的语言往往不能...
SQL 就是一种优秀的 DSL。您无法使用 SQL 编写操作系统,但它是处理关系数据库这一有限领域的理想选择。在同样意义上,Groovy 是 Java 平台的 DSL,因为它是有限领域的 Java 开发的理想选择。我在这里使用DSL是为了启发读者,并不是特别的精确。如果我把 Groovy 称为常用 Java 语言的内部 DSL,可能更容易被 DSL 纯...
在这一步,我们将创建DSL的基本结构。首先,创建一个Java类,命名为DslBuilder,作为我们的DSL构建器。在该类中,我们需要定义一些方法和属性来支持DSL的使用。 publicclassDslBuilder{privateStringname;privateintage;publicvoidname(Stringname){this.name=name;}publicvoidage(intage){this.age=age;}publicvoidprintInfo(...
使用Groovy构建DSL DSL(Domain Specific Language)官方定义为:针对某一领域,具有受限表达性的一种计算机程序设计语言。 常用于聚焦指定的领域或问题,这就要求 DSL 具备强大的表现力,同时在使用起来要简单。由于其使用简单的特性,DSL 通常不会像Java,C++等语言将其应用于一般性的编程任务。
groovy脚本灵活,但是可能直接调用java功能,所以不直接使用在业务端并不安全,可以自定义白名单制,来实现很多函数的许可,这样调用起来安全,又实用,能增加程序的灵活性,很多业务规划不用写死。 下面的实例,…
此外Groovy是一种DSL(Domain Specific Language),是针对某个领域所涉及出来的一个特定的语言,因为有了领域的限制,要解决的问题就被划定了范围,所以语言不需要复杂,就可以具有精确的表达能力,使用起来非常方便。更具体的来说:使用java或者C++也能够实现相同的功能,但是会产生大量繁琐的代码并导致大量的领域知识被隐藏在...
初次接触到Groovy是在实习中接触到一个 纯Groovy写的项目,当时看了下这不就是没有分号的Java么,而且也是有年纪的语言了,并不想投入时间学习。后来工作中越来越多的看到Groovy的身影,Gradle,Spring Cloud Contract等等都支持Groovy作为DSL(领域专用语言),同时Groovy在测试领域也有一席之地,因为语法简单,可以很快捷的编写...