Используя spring3 @Value для доступа к значениям PropertyPlaceholderConfigurer? - PullRequest
11 голосов
/ 16 ноября 2009

Я пытаюсь установить значение строки в bean-компоненте Spring, используя @Value, когда мой источник свойств является подклассом PropertyPlaceholderConfigurer. Кто-нибудь знает, как это сделать?

Ответы [ 3 ]

15 голосов
/ 27 октября 2011

Старый вопрос, но все же стоит ответить. Вы можете использовать выражение так же, как и в оригинальном PropertyPlaceholderConfigurer.

app.properties

    app.value=Injected

Приложение-context.xml

    <bean id="propertyConfigurer" class="MyPropertyPlaceholderConfigurer">
      <property name="location">
        <value>file:app.properties</value>
      </property>
    </bean>

в целевом бобе

    @Value(value="${app.value}")
    private String injected;

Протестировал этот подход с использованием Spring 3.0.6

0 голосов
/ 19 марта 2011

Я не думаю, что возможно получить доступ к свойствам, загруженным PropertyPlaceHolderConfigurer, используя SPEL в аннотации @Value. Было бы здорово, но, насколько я знаю, следующая лучшая вещь - объявить:

<util:properties id="props" location="classpath:xxx/yyy/app.props"/>

Может указывать на тот же файл свойств, что и ваш PropertyPlaceHolderConfigurer.

0 голосов
/ 16 ноября 2009

Удалось ли вам заставить его работать, явно введя значение из файла определения компонента с помощью синтаксиса свойства? Теоретически, если это сработает, вы сможете использовать то же выражение в @Value. В этом отношении вы должны быть в состоянии сделать это, используя @Autowired @Qualifier также

...