在Grails中,是否可以将注释应用于属性的访问器而不是(或除了)其字段,而无需显式定义访问器?
如果是这样,需要什么版本的Grails?
例如,我喜欢以下内容(使用假的语法,使用特定的标签来确定应用注释的内容):class C {
field:
@A1
getter:
@A2
getter:
@A3
accessors:
@A4
all:
@A5
String p
}
答案 0 :(得分:0)
当您在POGO中定义属性(如Grails域类)时,Groovy编译器会将其重写为具有getter和setter的私有字段,但前提是没有范围修饰符(public
/ {{1 }} /等)
这很方便,因为如果您以后想要在设置和/或获取值时添加逻辑或计算,您可以添加自己的getter和/或setter方法,编译器将只生成尚未明确定义的方法。 Java类已经使用了getter和setter,因此这不会影响现有客户端或需要重新编译。
您可以通过反编译您的域类看到Groovy编译器将属性上定义的任何注释移动到字段,例如使用此域类
protected
你会在反编译代码中看到类似的代码:
class Thing {
@Foo
String name
}
许多框架将访问字段注释或访问者注释,因此通常无需任何其他配置即可工作,但这取决于正在阅读注释的框架或代码。