Java 波乔+;属性文件中声明的变量约束(使用Lombok和Spring)

Java 波乔+;属性文件中声明的变量约束(使用Lombok和Spring),java,spring,constraints,pojo,properties-file,Java,Spring,Constraints,Pojo,Properties File,在Java+Spring项目中,我们有一个属性文件,我想在其中添加一些约束来限制POJO(传入数据容器)中的文本长度(限制输入以字符串形式存储);对于我使用的javax.validation.constraints 基本版本,不包含此属性的文件用法: ... import lombok.Data; import javax.validation.constraints.Size; ... @Data @NoArgsConstructor public class DummyPojo { @S

在Java+Spring项目中,我们有一个属性文件,我想在其中添加一些约束来限制POJO(传入数据容器)中的文本长度(限制输入以字符串形式存储);对于我使用的javax.validation.constraints

基本版本,不包含此属性的文件用法:

...
import lombok.Data;
import javax.validation.constraints.Size;
...
@Data
@NoArgsConstructor
public class DummyPojo {
  @Size(min = 15, max = 100)
  private String description;
  ...
  public DummyPojo(...){...}
  ...
}
由于它将应用于具有相同限制的多个POJO,因此目标是将最小大小值和最大大小值存储在一个唯一的点上,我在属性文件中就想到了这一点。我认为做这样的事情:

...
import lombok.Data;
import javax.validation.constraints.Size;
...
@Data
@NoArgsConstructor
public class DummyPojo {
  @Getter(AccessLevel.NONE)
  @Setter(AccessLevel.NONE)
  @Autowired
  private DataConstraintsProperties properties;
    @Size(min = properties.getMinTextSize, max = properties.getMaxTextSize)
    private String description;
      ...
    public DummyPojo(...){...}
      ...
}
但这是行不通的,显然,@Autowired确实需要其他东西,比如@Component或@servicebean,而不是@datapojo

您知道是否可以用同样的方式使POJO能够在声明时加载这些属性文件值(尽管我担心这是不可能的),或者我是否应该使用其他方法(从软件工程的角度来看,这被认为是优雅的,或者至少不被认为是正确的)


非常感谢并向您致意

在属性文件中添加最小和最大属性,如下所示

min=8

max=19
在你的pojo课上完成

@Value("${min}")
private String gMin;

@Value("${max}")
private String gMax;
并像下面的代码一样使用这个变量

@Size(min = gMin, max = gMax)
private String description;

在属性文件中添加最小和最大属性,如下所示

min=8

max=19
在你的pojo课上完成

@Value("${min}")
private String gMin;

@Value("${max}")
private String gMax;
并像下面的代码一样使用这个变量

@Size(min = gMin, max = gMax)
private String description;

谢谢,但我必须从哪里导入@Value、Spring或Lombok?我尝试了这两种方法,但它只接受spring…beans.factory.annotation.Value,它不适用于@Size(…,max=gMax),它不编译:“Error:(…)java:元素值必须是常量表达式”您不必导入lombok,它是一个spring引导功能,用于读取属性文件数据,使用下面的格式为代码设置权限。您必须导入org.springframework.beans.factory.annotation.Value;公共类SamplePropertyLadingTest{@Autowired private SampleProperty SampleProperty;@Value(${prefix.stringProp1})私有字符串stringProp1;你的想法很好,但不幸的是,@Size值是在编译时设置的,而属性文件是在运行时加载的,因此,一些公司有经验的Java开发人员或我无法找到使其工作的方法,我不确定我是否遗漏了什么,或者可能我之前解释错了。最后,我们将作为一个例外,我硬编码了这种限制。感谢您在任何情况下的帮助。谢谢,但是我必须从哪里导入@Value、Spring或Lombok?我尝试了这两种方法,它只接受Spring…beans.factory.annotation.Value,它不适用于@Size(…,max=gMax),它不编译:“Error:(…)java:元素值必须是一个常量表达式“您不必导入lombok它是一个spring引导功能,可以读取属性文件数据,使用下面的格式来修改代码。您必须导入org.springframework.beans.factory.annotation.value;公共类SamplePropertyLadingTest{@Autowired private SampleProperty SampleProperty;@Value(${prefix.stringProp1})私有字符串stringProp1;你的想法很好,但不幸的是,@Size值是在编译时设置的,而属性文件是在运行时加载的,因此,一些公司有经验的Java开发人员或我无法找到使其工作的方法,我不确定我是否遗漏了什么,或者可能我之前解释错了。最后,我们将我硬编码这种限制,作为例外。无论如何谢谢你的帮助。