【发布时间】:2016-02-08 18:59:05
【问题描述】:
我有一个实体类:
类.java
@Entity
public class Class {
@Id
@GeneratedValue
private Long id;
@NotNull
@Range(min = 0, max = 10)
private double value;
}
我想摆脱 @Range 注释中的硬编码值并从配置文件中加载它们。
约束.属性
minVal=0
maxVal=10
这是我尝试过的:
@Component
@Entity
@PropertySource("classpath:/constraints.properties")
public class Class {
@Value("${minVal}")
private final long minValue;
@Value("${maxVal}")
private final long maxValue;
@Id
@GeneratedValue
private Long id;
@NotNull
@Range(min = minValue, max = maxValue)
private double value;
}
我得到的错误是attribute value must be constant。应该如何初始化这些字段才能得到我想要的结果?
【问题讨论】:
-
如答案中所述,您尝试做的事情可能是不可能的。但是,如果您需要根据 Spring 配置中的某个值验证范围,您可以编写自定义验证器并将最小值和最大值注入其中。它会涉及更多的代码,而不仅仅是一个注释,所以努力可能不值得,但如果你真的需要它,它可能是一种方法
标签: java spring spring-mvc