Java Grails域类的查询方法来自哪里?
同样的问题也可以问控制器等。编译器如何找到grails工件神奇地拥有的方法/字段?我正试图在纯Java/Spring中设计类似的东西,并想知道如何实现类似的功能 编译器如何找到grails工件所使用的方法/字段 神奇地拥有 编译器并没有真正找到方法,至少不是所有查询机制都能找到。例如,动态查找程序不会在编译时解析。它们在运行时通过动态分派进行处理Java Grails域类的查询方法来自哪里?,java,grails,Java,Grails,同样的问题也可以问控制器等。编译器如何找到grails工件神奇地拥有的方法/字段?我正试图在纯Java/Spring中设计类似的东西,并想知道如何实现类似的功能 编译器如何找到grails工件所使用的方法/字段 神奇地拥有 编译器并没有真正找到方法,至少不是所有查询机制都能找到。例如,动态查找程序不会在编译时解析。它们在运行时通过动态分派进行处理where查询是在编译时装配的,其中“how”有点复杂,但简而言之,我们有编译时AST转换,用于在域类上查找对静态where方法的调用,以及在遇到其中一
where
查询是在编译时装配的,其中“how”有点复杂,但简而言之,我们有编译时AST转换,用于在域类上查找对静态where
方法的调用,以及在遇到其中一个时,编译时的AST转换生成运行时执行查询所需的代码。像get(id)
和list()
我正试图在纯Java/Spring中设计类似的东西,并且会
我想知道我怎样才能完成这样的事情
我上面描述的方法都没有可以用Java实现的直接对应方法。所有这些技术都依赖于Groovy提供的特性
嗯
编辑
当前问题的标题是“Grails域类从何处获得查询方法?”因此我在域类的查询方法上下文中专门回答了这个问题。对于更一般的“编译器如何找到grails工件神奇地拥有的方法/字段?”,上面的注释仍然适用
编译器如何找到grails工件所使用的方法/字段
神奇地拥有
编译器并没有真正找到方法,至少不是所有查询机制都能找到。例如,动态查找程序不会在编译时解析。它们在运行时通过动态分派进行处理where
查询是在编译时装配的,其中“how”有点复杂,但简而言之,我们有编译时AST转换,用于在域类上查找对静态where
方法的调用,以及在遇到其中一个时,编译时的AST转换生成运行时执行查询所需的代码。像get(id)
和list()
我正试图在纯Java/Spring中设计类似的东西,并且会
我想知道我怎样才能完成这样的事情
我上面描述的方法都没有可以用Java实现的直接对应方法。所有这些技术都依赖于Groovy提供的特性
嗯
编辑
当前问题的标题是“Grails域类从何处获得查询方法?”因此我在域类的查询方法上下文中专门回答了这个问题。对于更一般的“编译器如何找到grails工件神奇地拥有的方法/字段?”,上面的注释仍然普遍适用。这可以通过在Groovy中使用Traits(在较新版本的grails中)或元编程(较旧版本的grails)来完成。@Joshuamore您能用一个例子给出答案吗?这可以在Groovy中使用Traits(在更高版本的Grails中)或元编程(更高版本的Grails)来完成“-@Joshuamore即使在更新版本的Grails中,也不是所有的查询方法都装配了Traits。例如,where
查询通过AST转换装配起来,AST转换应用于调用查询的站点。在所有版本的Grails中,动态查找程序都依赖于使用methodMissing
@JeffScottBrown的运行时元编程,因此这听起来像是纯Java不可能实现的,如果它依赖于Groovy AST转换?这可以在Groovy中使用Traits(在更高版本的Grails中)或元编程(更高版本的Grails中)来完成。@Joshuamore你能用一个例子给出答案吗?这可以在Groovy中使用Traits(在更高版本的Grails中)或元编程(更高版本的Grails)来完成“-@Joshuamore即使在更新版本的Grails中,也不是所有的查询方法都装配了Traits。例如,where
查询通过AST转换装配起来,AST转换应用于调用查询的站点。在所有版本的Grails中,动态查找程序都依赖于使用methodMissing
@JeffScottBrown的运行时元编程,因此这听起来像是纯Java不可能实现的,如果它依赖于Groovy AST转换?