2016-06-17 4 views
0

У меня есть компонент пружины, которая проверяет значения Субъекта класса,Как Вводить значения из файла свойств в JSR аннотации

Одна из переменных имеют аннотации, значение которого должны быть загружено из файл недвижимости, в настоящее время он говорит, что Attribute must be constant

Вот пример кода.

Я знаю, что Spring позволяет получать свойства, как этот

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

Но у меня есть сущность с одной из переменных аннотированных по валидатора интерфейса т.е. @NameValidationDefinition. Я хотел бы передать значения из файла свойств в аннотации, но она дает компиляции ошибки времени, что атрибут должен быть константой, я понимаю, как я знаю, что

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

То, что я хочу знаете, есть ли способ обхода этого, чтобы заставить его работать?

Значение из файла свойств по умолчанию заносится в String, но все же, когда я создаю Entity и инициализирую переменную как статический final и передаю String в Constructor, я получаю ту же ошибку времени компиляции.

Буду признателен за любую помощь в этом вопросе.

ответ

0

Вы не можете иметь переменные в аннотациях. Это не ограничение проверки бина, а самого JVM. Смотрите также Which types can be used for Java annotation members?

Примечание, в весеннем примере вы даете значение является строкой с помощью специального «ключа» $ {allowedNames} который позже получает интерполированное. Это отличается от значения аннотации, являющегося фактической переменной, как предполагает ваш код.

+0

Я слышу вас, и я знаю, что ничего, кроме констант, не может переходить к аннотациям, но я думал, что есть хакерский способ сделать это. Я имею в виду, что разработчики постоянно сгибают правила с помощью кода. –

+0

Нет, не на этом. Вы должны были бы приспособиться к самому JLS. Не сказать, что это невозможно, но я точно не хотел бы туда идти. – Hardy

+0

Ха-ха, ты .. Спасибо .. Думаю, я могу отметить это как ответ, поскольку он может помочь кому-то еще найти это. –