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

时间:2015-03-17 17:19:31

标签: grails

我有一个在许多域类上进行常规操作的通用方法

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

我想要对criteriaClass上应用的各种内容进行自动填充。但为此,我需要将def criteriaClass替换为InterfaceForDomainClassBehaviour criteriaClass

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

1 个答案:

答案 0 :(得分:3)

没有。

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

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

超过100种方法被添加到域类中(反编译一些 - 考虑到Groovy源有多小,看看你的课程结果有多少,并且将数十个添加到控制器中,这真是太神奇了)。但是这一切都是混合的,所以尽管你的域类之间存在很大的重叠,但除非你自己添加它们,否则没有共同的基类或接口。