Java hibernate-validator @接口从属性加载

kt06eoxx  于 2022-11-30  发布在  Java
关注(0)|答案(1)|浏览(104)

我看到下面的Hibernate验证器代码

package org.hibernate.validator.constraints;
...
public @interface CreditCardNumber {
   String message() default "{org.hibernate.validator.constraints.CreditCardNumber.message}";
...
}

并且在属性文件中具有关键字值,信用卡错误消息如

org.hibernate.validator.constraints.CreditCardNumber.message        = invalid credit card number

Hibernate验证器是如何做到这一点
我的意思是在@接口上加载属性?

hts6caw3

hts6caw31#

正如这里所解释的Java Properties file examples,你可以在你的接口中使用Properties类,方法的默认实现就像你已经开始的那样。

public interface CreditCardNumber {
    Properties properties = new Properties();

    default String message() throws IOException {
        properties.load(Main.class.getClassLoader().getResourceAsStream("config.properties"));
        return properties.getProperty("org.hibernate.validator.constraints.CreditCardNumber.message");
    };
}

或者,一个更简洁的解决方案是创建自己的自定义( Package 器解决方案也可以)Properties类,在其中将属性文件加载到其构造函数中(在构造过程中),这样就不必在需要时调用properties.load(...)

相关问题