哪个接口/抽象类用于grails域类行为



我有一个通用方法,用于在许多域类上执行常见操作

static Map getNumberOfPropertyByTopicIds(def criteriaClass, List ids) {
  criteriaClass.createCriteria(). //Some GORM methods used
}

我想要自动完成criteriaClass上应用的各种内容。但为了做到这一点,我需要将def criteriaClass替换为InterfaceForDomainClassBehaviour criteriaClass

但我不知道InterfaceForDomainClassBehaviour是什么。哪个接口/抽象类实现域类行为?

没有。

Grails使用"约定重配置",因此与其他框架不同,在其他框架中,您可以扩展基类、实现一个或多个接口、使用注释等,只需将工件类(域类、服务等)放在grails-app下的正确目录中,使用适当的类命名约定(域类除外),Grails就可以为您混合行为。当然,你可以配置一些东西,例如mapping块等。

在Grails 2之前,添加方法大多是使用Groovy运行时元编程完成的,在Grails 2中,大多数行为都是在编译时使用AST添加的,而运行时元程序主要用于动态代码,如findAllByHeightAndWeightAndHairColorAndShoeSize,在这种情况下,在每种组合中编译都是不切实际和/或不可能的。

有100多个方法被添加到域类中(对一些方法进行反编译——考虑到Groovy源代码有多小,看到类中最终有多少方法真是太神奇了),还有几十个方法添加到控制器中。但这一切都是混合在一起的,所以尽管域类之间有很大的重叠,但除非你自己添加它们,否则就没有通用的基类或接口。

最新更新