属性文件中值的spring Java验证程序注释
我正在尝试编写一个验证器来验证application.properties
中属性的值
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = BaseUrlStartsWithHttpsValidator.class)
public @interface CheckBaseUrlStartsWithHttps {
String message() default "Base url does not start with https:// check your configuration, "
+ "Found: ${validatedValue}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
String value() default "";
}
这是一个简单的验证,我只是检查字符串是否以https://
开头
我试图通过注释字段来使用它,这样:
@CheckBaseUrlStartsWithHttps
@Value("${my.base.url}")
private String baseUrl;
但是它似乎没有达到我尝试过的改变@Target
类型的技巧,即使这样验证属性也是可能的,我使用的是Spring框架
# 1 楼答案
所以,我在阅读、阅读、阅读和尝试不同的东西时发现了自己。事实证明,在我正在读取属性的类中,我必须用
@Validated
和@ConfigurationProperties(prefix = "my")
注释类本身,然后我的检查按预期工作。因此,最终产品是:及
及
但唯一可能有点恼人的是,如果URL配置不正确,这将使应用程序在启动时失败,这本身可能是一件好事,可以立即修复,但我更希望它在被访问时在运行时失败,并抛出一个RumeMeeException。无论如何,这似乎起到了作用