Spring properties (свойство-заполнитель) автопроводка - PullRequest
40 голосов
/ 21 мая 2010

У меня есть в приложении applicationContext.xml

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


<bean id="clientPreferencesManager" class="pl.bildpresse.bildchat2.business.ClientPreferencesManager" >
    <property name="clientApiUrl" value="${clientapi.url}" />     
</bean>

Можно ли сделать то же самое по autowire? Что-то вроде:

@Autowired
@Qualifier("${clientapi.url}")
public void setClientApiUrl(String clientApiUrl) {
    this.clientApiUrl = clientApiUrl;
}

Ответы [ 5 ]

78 голосов
/ 21 мая 2010

Вы можете использовать @Value:

@Value("${clientapi.url}") 
public void setClientApiUrl(String clientApiUrl) { 
    this.clientApiUrl = clientApiUrl; 
}
8 голосов
/ 11 мая 2012

Мне потребовалось некоторое время, чтобы понять, почему это не сработало. Я всегда использовал # вместо $. Я всегда получаю сообщение:

EL1008E:(pos 0): Field or property 'secretkey' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext'

Просто пришлось изменить его с:

@Value("#{secretkey}')

до

@Value('${secretkey}')

Надеюсь, это сэкономит кому-то время.

5 голосов
/ 18 августа 2010

Хорошо. Просто получил это. Вам нужно добавить @Autowired Что-то вроде:

@Autowired
@Value("${clientapi.url}") 
private StringValueResolver resolver;

Я использую пружину 3.0.0.RELEASE

Приветствия

2 голосов
/ 22 мая 2010

Для пружины 3.0 показан правильный путь - используя @Value("${expression}")

Для весны до 3.0 вы можете попробовать:

@Autowired
private StringValueResolver resolver;

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

1 голос
/ 27 мая 2010

Мое решение заключается в использовании

<context:property-override location="classpath:clientapi.properties" />

, а затем в clientapi.properties файл

clientPreferencesManager.clientApiUrl=http://localhost:8084/ClientAPI/resources/

Это тоже хорошо

...