groovy是否提供包含机制?

Chr*_*wes 7 groovy web-services include cross-cutting-concerns endpoint

我们正在寻找一种用于groovy脚本的包含机制,以便为横切关注提供空间.

在我的示例中,我们将Web服务端点作为groovy脚本,并希望登录到我们的Web服务协议.为此,我们使用隐式对象(从我们的框架中获取)来创建日志语句.

但是,如果我们在每个Web服务端点中对此进行编码,那么这是样板代码.

我们正在搜索php中的include(),包括其他groovy脚本,有什么想法如何做到这一点?

小智 10

Groovy将其文件视为对象(将其视为自动包装).它使java类路径中的所有.groovy文件都可用作类.所以如果你有文件util.groovy,里面包含这样的内容:

def static AuxMethod() {
    return "Hello World"
}
Run Code Online (Sandbox Code Playgroud)

要从另一个文件中调用它,您只需编写:

println util.AuxMethod()
Run Code Online (Sandbox Code Playgroud)

而已.再次,确保您的util.groovy文件位于类路径中.

  • 我之前评论的后续行动.这也适用于UNIX.在将"util"重命名为"Util"之前不起作用.此外,大多数经验Java + Groovy开发人员都会编写方法声明以符合Java约定:static def auxMethod.即类型名称前面的"静态"和所有方法都以小写字母开头(参见java.util.Collections中的大量静态方法). (3认同)
  • 如果util.groovy脚本使用大小写Util.groovy重命名,并且引用相应地更改为'println Util.AuxMethod()',则该示例仅适用于Windows,至少从Windows开始. (2认同)

Dan*_*Dan 1

既然你已经提到了 \xe2\x80\x9ccross-cutting-concerns\xe2\x80\x9d 我\xe2\x80\x99d 说你需要拦截你的 webservice 调用AOP风格(不是包含机制)。

\n\n

Grails 与Spring 框架完全集成,因此这为利用 Spring AOP 功能提供了一个很好的选择。查看 grails 官方指南中的这一章:\n http://grails.org/doc/latest/guide/14.%20Grails%20and%20Spring.html并搜索单词 AOP。

\n\n

也许有一种纯粹的AOP 方式,但我会选择 grails 和 spring。

\n