可以询问有关控制器等的同样问题。编译器如何找到怪异神器所具有的方法/字段?我试图在纯Java / Spring中设计类似的东西,并且想知道我如何能够完成这样的事情。
答案 0 :(得分:2)
编译器如何找到粘贴工件的方法/字段 神奇地拥有?
编译器并没有真正找到这些方法,至少不适用于所有查询机制。例如,动态查找程序在编译时不会被解析。它们在运行时使用动态调度进行处理。 where
查询在编译时被绑定,并且"如何"有点参与,但总之,我们有编译时AST转换,寻找对域类的静态where
方法的调用,当遇到其中一个时,编译时的AST转换生成必要的代码在运行时执行查询。 get(id)
和list()
等方法在Graits中定义,Grails在编译时将其添加到所有域类。
我正在尝试在纯Java / Spring中设计类似的东西 想知道我怎么能做到这样的事情。
我上面描述的所有方法都没有可以用Java实现的直接对应方式。所有这些技术都依赖于Groovy提供的功能。
HTH
修改强>
问题的标题目前是#34; Grails域类从哪里获取查询方法?"所以我在域类的查询方法的上下文中特别回答。对于更通用的"编译器如何找到使神器具有神奇功能的方法/字段?",上述注释仍然普遍适用。