Использование аннотации @Value Spring с Groovy - PullRequest
33 голосов
/ 13 апреля 2011

У меня есть классный класс, где я хочу автоматически связать значение свойства.

Например:

public @Value("${valueA}" ) String valueA;

С добавлением свойства-заполнителя в контексте моей заявки

<context:property-placeholder location="classpath:spring/app.properties" />

В app.properties задано значение для "valueA", поэтому теоретически это должно заполнить строковое значениеA в моем классе во время выполнения.

Эта установка отлично работает, если я использую класс Java, но не если я использую класс Groovy.

Я получаю ошибку компиляции:

Ошибка: ожидается, что $ valueA будет встроенной константой типа java.lang.String в @ org.springframework.beans.factory.annotation.Value
Ошибка: атрибут «значение» должен иметь тип «java.lang.String»; но нашел тип 'java.lang.Object' в @ org.springframework.beans.factory.annotation.Value

Я просто хочу знать, является ли приведенный выше синтаксис правильным при использовании класса groovy, и если нет, то каков правильный синтаксис для автоматической разметки параметра @Value во время выполнения.

Ответы [ 2 ]

57 голосов
/ 13 апреля 2011

Используйте одинарные кавычки, т.е.

public @Value('${valueA}') String valueA
28 голосов
/ 14 апреля 2011

, так как использование $ заставляет Groovy интерпретировать аргумент аннотации как GString, вы получаете ошибку компиляции.вы можете либо экранировать \ $, либо использовать одинарные кавычки.

...