Java Grails如何在运行时创建方法,例如obj.setName(“Abhay”)

Java Grails如何在运行时创建方法,例如obj.setName(“Abhay”),java,grails,reflection,Java,Grails,Reflection,我想知道Grails是如何创建动态方法的,Grails框架在运行时创建了很多方法,比如setter和getter、Dynamic finder等等。我知道java中的反射,但从未读过类似的东西, 如果您有任何发现,请提供我的链接大部分都是基于。看看AbstractGormApi及其在Grails中的实现,您可以在那里找到运行时注入所有域类的大多数方法,以执行Grails所做的所有魔术。这是一个非常大的主题,称为“元编程”,也是Grails使用Groovy的原因之一。你可以从理解这个概念开始:已经

我想知道Grails是如何创建动态方法的,Grails框架在运行时创建了很多方法,比如setter和getter、Dynamic finder等等。我知道java中的反射,但从未读过类似的东西,
如果您有任何发现,请提供我的链接

大部分都是基于。看看
AbstractGormApi
及其在Grails中的实现,您可以在那里找到运行时注入所有域类的大多数方法,以执行Grails所做的所有魔术。

这是一个非常大的主题,称为“元编程”,也是Grails使用Groovy的原因之一。你可以从理解这个概念开始:已经回答了。学习接受答案。实际上,在域类中几乎没有运行时元编程——只有名称是动态的并且基于持久字段名的方法,例如
findAllByFooAndBar
。您是正确的,
AbstractGormApi
及其子类是域类方法的源,但是这些方法在编译时通过AST转换混合到域类中。同样的事情也发生在控制器和taglib中——运行时元编程很少,编译时元编程很多