Printemps 3.0.5 ne pas évaluer @Valeur de l'annotation de propriétés

Essayer à l'auto-fil propriétés d'un bean dans Printemps 3.0.5.COMMUNIQUÉ de, je suis en utilisant:

  • config.properties:

    username=myusername
  • main-components.xml:

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

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

Comme un résultat, le nom d'utilisateur est défini pour littéralement "${username}", donc l'expression n'obtient pas analysée. Mon autre auto-filaire dépendances sur cette classe, se mettre, et le Printemps ne lance pas d'exception. J'ai aussi essayé d'ajouter @Autowired mais il n'a pas aidé.

Si je analyser les propriétés d'un bean et utiliser @Autowired + @Qualifier, il travaille:

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

Toute idées sur la façon d'utiliser @Value? Peut-être que j'ai besoin d'inclure du Printemps de dépendance que je n'ai pas? Merci

  • Êtes-vous sûr que vous avez <context:property-placeholder> dans le même contexte de l'application comme votre MyClass bean (pas dans le contexte parent)?
  • Vous avez raison. J'ai déménagé <contexte:propriété de l'espace réservé> à partir du contexte défini par ContextLoaderListener de servlet contexte. Maintenant, mes valeurs d'obtenir analysée. Merci beaucoup!
  • tout à fait une chose utile à faire ici est de mettre en ignore-insolubles-des espaces réservés à de faux ainsi, l'application échoue si elle ne peut pas résoudre les détenteurs de place - qui est ce que votre problème a été
  • Trouvé cette réponse après de nombreuses heures à me demander pourquoi mon @Valeur les annotations n'ont pas de travail 🙁 Comme indiqué dans le d'autres post BeanPostProcessor n'est pas partagé à travers les contenants, même dans la même hiérarchie
  • Vous pouvez @Autowire Environnement, puis de l'environnement.getProperty("nom"). Voir stackoverflow.com/a/15562319/632293
InformationsquelleAutor Alex Yarmula | 2011-03-11