当我读到here ,grails 正在使用 methodMissing 将 GORM 方法注入(inject)域类,但是说过 methodMissing 的执行成本很高,因为它只发生在调度失败的情况下,为什么这些方法不通过元类或 AST 转换注入(inject)?有什么线索吗?
最佳答案
使用 methodMissing 并没有那么昂贵,因为 Grails 仅在首次执行未找到的方法时才在 MOP 中创建新方法。后续执行发生在新创建的方法上。
考虑一个具有许多属性的域类。如果所有的 findBy*、findAllLBy*、countBy* 等排列都应该在编译时创建,那么这些类很容易变得非常大。通过使用方法缺失,只会创建在运行时实际使用的方法。
关于grails - 为什么 GORM 使用 methodMissing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13699525/