在 Spring 中覆盖父类受保护的成员变量注释



我今天在使用 SpringBoot 时遇到了这个问题,我有一个父抽象类,它用弹簧注释定义了这样的受保护字段。

@Length(max=100)
protected String uuid;

在我的子类中,@Length注释的最大值需要设置为不同的值,我正在绞尽脑汁地研究如何做到这一点。在阅读之后,我怀疑有一种方法可以在类构造函数中的类成员变量上设置注释,这样我就可以为成员变量 uuid 定义@Length注释,然后覆盖子构造函数中的值,但没有找到任何示例或文档如果这是可能的。任何关于如何使用 spring 覆盖子类中的父受保护变量注释的想法或示例将不胜感激。

这是正在使用的全套注释...

@ApiModelProperty("Unique ID For My Object")
@Length(max=100)
@Pattern(regexp = "\S*")
protected String uniqueId

在java中,没有覆盖变量这样的事情。只能重写方法。最后这句话提出了如何解决问题的想法。如果您不直接在属性上指定注释,而是在特定字段的 getter 上指定注释,例如:

class Parent{
private String uniqueId;
...
@ApiModelProperty("Unique ID For My Object")
@Length(max=100)
@Pattern(regexp = "\S*")
public String getUniqueId(){
return uniqueId;
}
}

然后,您可以通过重写 getter 来覆盖子类中的这些属性:

class Child extends Parent{
private String uniqueId;
...
@ApiModelProperty("Unique ID For My Object")
@Length(max=200)
@Pattern(regexp = "\S*")
public String getUniqueId(){
return uniqueId;
}
}

我还没有检查这些注释是否也可以应用于 getter,但我希望如此。

最新更新