Grails:将注释应用于属性访问器而不是字段

时间:2015-04-14 11:37:16

标签: grails properties annotations grails-2.0

在Grails中,是否可以将注释应用于属性的访问器而不是(或除了)其字段,而无需显式定义访问器?

如果是这样,需要什么版本的Grails?

例如,我喜欢以下内容(使用假的语法,使用特定的标签来确定应用注释的内容):

class C {
    field:
    @A1
    getter:
    @A2
    getter:
    @A3
    accessors:
    @A4
    all:
    @A5
    String p
}

1 个答案:

答案 0 :(得分:0)

当您在POGO中定义属性(如Grails域类)时,Groovy编译器会将其重写为具有getter和setter的私有字段,但前提是没有范围修饰符(public / {{1 }} /等)

这很方便,因为如果您以后想要在设置和/或获取值时添加逻辑或计算,您可以添加自己的getter和/或setter方法,编译器将只生成尚未明确定义的方法。 Java类已经使用了getter和setter,因此这不会影响现有客户端或需要重新编译。

您可以通过反编译您的域类看到Groovy编译器将属性上定义的任何注释移动到字段,例如使用此域类

protected

你会在反编译代码中看到类似的代码:

class Thing {
   @Foo
   String name
}

许多框架将访问字段注释或访问者注释,因此通常无需任何其他配置即可工作,但这取决于正在阅读注释的框架或代码。