POJO + 从财产文件声明的变量约束(与龙目岛和春天)



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

没有属性文件的基本版本用于此:

...
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或@Service豆,而不是@Data的POJO。

您是否知道是否可以以相同的方式使 POJO 能够在声明时加载这些属性文件值(尽管恐怕这是不可能的(,或者我是否应该使用其他方法(从软件工程的角度来看被认为是优雅的,或者至少不被认为是反模式,例如常量类(?

非常感谢和最诚挚的问候

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

min=8
max=19

并在您的pojo课程中完成它

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

并像下面的代码一样使用此变量

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

最新更新