Внедрить свойство в класс autowired

Используя Roo, у меня есть свойство с именем 'imagesBaseDir' в файле свойств с именем app.properties, и должно получить это:

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

Я хочу передать это свойство в контроллер, поэтому я поместил туда такое поле (согласно всем примерам, которые я прочитал)

private @Value("${imagesBaseDir}") String imageBaseDir;

Но это не устанавливается.

Пробовал это с другими свойствами, например. db.properties, который, как я знаю, Spring определенно подхватит, поэтому мой файл реквизита, вероятно, в порядке.

Что мне не хватает? Сводит меня с ума, все примеры выглядят такими простыми, но у меня это просто не работает :(

Спасибо!


person Richard    schedule 28.02.2012    source источник
comment
задействован ли spring-mvc и как? Какое значение установлено на самом деле? ваш объект боб?   -  person Bozho    schedule 29.02.2012
comment
Он просто устанавливается равным нулю, когда я запускаю код. Да, я использую spring-mvc, это в основном стандартный проект Roo. Я тоже пытался поместить @Autowired над полем, но ничего не получаю.   -  person Richard    schedule 29.02.2012
comment
приведенный выше код находится в @Controller?   -  person Bozho    schedule 29.02.2012
comment
Да, это в @Controller (тот, который я добавил через Roo — «добавить контроллер»). После того, как вы упомянули spring-mvc, я подумал, сможет ли он прочитать свойства i18n, но нет. На самом деле, во всех случаях это не вычисление выражения, поэтому значение на самом деле устанавливается в строку imagesBaseDir или что-то другое, что я указываю в качестве имени свойства. Это не оценивается - я думаю, что это проблема   -  person Richard    schedule 29.02.2012


Ответы (1)


У вас есть дочерний контекст (dispatcher-servlet.xml), и вы пытаетесь внедрить значение в определенный там контроллер. Однако дочерние контексты не разрешают свойства с помощью <context:prop.... Вы также должны иметь это в файле dispatcher-servlet.xml.

person Bozho    schedule 28.02.2012
comment
Работает, спасибо миллион. Больше не совершим эту ошибку, ха-ха. Да, я скопировал эту строку ‹context:property-placeholder location=classpath*:META-INF/spring/*.properties/› из файла application-context.xml в webmvc-config.xml, и теперь все отлично работает. ваше здоровье - person Richard; 29.02.2012