Как ввести одно значение свойства в строку с помощью Spring 2.5.x? - PullRequest
6 голосов
/ 20 октября 2008

Я действительно хотел бы аннотировать метод со ссылкой на одно свойство в файле свойств для внедрения.

@Resource("${my.service.url}")
private String myServiceUrl;

Конечно, этот синтаксис не работает;) Вот почему я спрашиваю здесь.

Мне известно, что я могу добавить полный файл свойств, но это кажется чрезмерным, я не хочу файл свойств - мне нужно настроенное значение.

Редактировать: я могу видеть только примеры PropertyPlaceholderConfigurer, где XML используется для привязки свойства к данному полю. Я до сих пор не могу понять, как этого можно добиться с помощью аннотации?

Ответы [ 5 ]

7 голосов
/ 18 августа 2009

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

.

Вы можете создавать экземпляры "String" bean-компонентов в конфигурации Spring XML, которые затем могут быть внедрены в аннотированные компоненты

@Component
public class SomeCompent{
  @Autowired(required=true 
  @Resource("someStringBeanId")
  private String aProperty;

  ...
}

<beans ....>
   <context:component-scan base-package="..."/>

  <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    ...
  </bean>
  <bean id="someStringId" class="java.lang.String" factory-method="valueOf">
    <constructor-arg value="${place-holder}"/>
  </bean>
</beans>
5 голосов
/ 03 декабря 2010

Я создал проект, который решает эту проблему для Spring 2.5. *:

http://code.google.com/p/spring-property-annotations/

Для Spring 3 вы можете использовать аннотацию @Value ("$ {Propery.key}").

4 голосов
/ 20 октября 2008

На форуме Spring есть ветка об этом. Короткий ответ заключается в том, что на самом деле нет способа внедрить одно свойство с помощью аннотаций.

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

0 голосов
/ 20 октября 2008

вы можете сделать это, если вы используете конфигурацию XML. Просто настройте PropertyPlaceholderConfigurer и укажите значение свойства в конфигурации

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <value>classpath:com/foo/jdbc.properties</value>
    </property>
</bean>
<bean ...>
  <property name="myServiceUrl" value="${my.service.url}"/>
</bean>
0 голосов
/ 20 октября 2008

Вы можете попробовать ввести значение свойства "my.service.url" в поле вашего компонента.

Взгляните на: http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#beans-factory-placeholderconfigurer

НТН.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...