如何将 属性 文件中的值注入 JSR 自定义注释

How to Inject values from a property file into JSR Custom Annotation

我有一个 spring 组件来验证实体 Class、

的值

其中一个变量有一个自定义注释,其值应该从 属性 文件中加载,目前它表示 Attribute must be constant

这是示例代码。

我知道 Spring 允许像这样获取属性

@Value("${allowedNames}")
    private String names;

但是我有一个实体,其中一个变量由自定义验证器接口注释,即 @NameValidationDefinition。我想将属性文件中的值传递给注释,但它给出了编译时错误,即 Attribute must be Constant 我知道

Annotations take only constants or final and static declared primitives or Strings
public Class Person {
@NameValidationDefinition(values = names)
private String name;
}

我想知道的是,是否有解决方法可以使其正常工作?

属性文件中的值默认转换为字符串,但当我创建实体并将变量初始化为静态最终变量并在构造函数中传递字符串时,我仍然遇到相同的编译时错误。

如果能提供任何形式的帮助,我将不胜感激。

注释中不能有变量。这不是 Bean Validation 的限制,而是 JVM 本身的限制。另见 Which types can be used for Java annotation members?

请注意,在 Spring 示例中,您给出的值是一个带有特殊 "key" ${allowedNames} 的字符串,稍后会进行插值.这与代码所暗示的注释值是实际变量不同。