java - Grails 域类从哪里获取它们的查询方法?

标签 java grails

关于 Controller 等也可能会问同样的问题。编译器如何找到 grails 工件神奇地具有的方法/字段?我正在尝试用纯 Java/Spring 设计类似的东西,并且想知道如何完成这样的事情。

最佳答案

How does the compiler find the methods/fields that grails artifacts magically have?

编译器并没有真正找到方法,至少对于所有查询机制来说是这样。例如,动态查找器不会在编译时解析。它们在运行时通过动态调度进行处理。 where 查询是在编译时设置的,“如何”涉及一些,但简而言之,我们有编译时 AST 转换,用于查找对静态 where 方法的调用在域类上,当遇到其中之一时,编译时的 AST 转换会生成在运行时执行查询所需的代码。像 get(id)list() 这样的方法是在 Grails 在编译时添加到所有域类的特征中定义的。

I am trying to design something similar in pure Java/Spring and would like to know how I can accomplish something like this.

我上面描述的方法都没有可以用 Java 实现的直接对应方法。所有这些技术都依赖于 Groovy 提供的功能。

HTH

编辑

当前问题的标题是“Grails 域类从哪里获取查询方法?”所以我在域类的查询方法的上下文中专门回答了这一问题。对于更一般的“编译器如何找到 grails 工件神奇地具有的方法/字段?”,上面的评论仍然普遍适用。

关于java - Grails 域类从哪里获取它们的查询方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39411567/

相关文章:

java - Grails 渲染 PDF 插件返回 NullPointerException

grails - 时髦的, chalice : high level questions on extraneous properties and command objects/data binding

java - HttpSocket 无法在我的 Android 设备上运行

Java 的 PushbackReader 和 EOF

java - SQLGrammarException : could not execute statement while trying to delete from db

database - Grails 一对一查询选项

java - hibernate + EhCache = java.io.NotSerializableException

grails - Grails Spring Security UI注册其他字段

Java设置字符串作为类名来运行

java - 什么是最小的 Java Web MVC 框架?