在春季重写父类受保护的成员变量注释

时间:2018-10-17 18:43:56

标签: java spring spring-annotations

今天我使用SpringBoot遇到了问题,我有一个父抽象类,该抽象类定义了一个带有spring注释的受保护字段。

@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

1 个答案:

答案 0 :(得分:0)

在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;
   }
}

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