Подтвердить что ты не робот

Spring 3.0.5 не оценивает аннотацию @Value из свойств

Попытка автоматической проводки свойств в bean в Spring 3.0.5.RELEASE, я использую:

  • config.properties:

    username=myusername
    
  • main-components.xml:

    <context:property-placeholder location="classpath:config.properties" />
    
  • MyClass:

    @Service
    public class MyClass {
    
        @Value("${username}")
        private String username;
        ...
    }
    

В результате имя пользователя устанавливается буквально "${username}", поэтому выражение не получает синтаксический анализ. Мои другие связанные с этим отношения с автоподключением этого класса устанавливаются, а Spring не вызывает никаких исключений. Я также попытался добавить @Autowired, но это не помогло.

Если я анализирую свойства для отдельного bean, а затем использую @Autowired + @Qualifier, он работает:

<bean id="username" class="java.lang.String">
    <constructor-arg value="${username}"/>
</bean>

Любые идеи о том, как использовать только @Value? Может быть, мне нужно включить некоторую зависимость Spring, которой у меня нет? Спасибо вам

4b9b3361

Ответ 1

Нашел вопрос. Скопировать/вставить из комментариев:

У вас есть <context:property-placeholder> в том же контексте приложения, что и MyClass bean (не в родительском контексте)? - axtavt

Ты прав. Я переместил <context:property-placeholder> из контекста, определенного ContextLoaderListener, в контекст сервлета. Теперь мои значения анализируются. Большое спасибо! - alex