Essayer de câbler automatiquement les propriétés à un bean dans Spring 3.0.5.RELEASE, j'utilise:
config.properties
:
username=myusername
main-components.xml
:
<context:property-placeholder location="classpath:config.properties" />
Ma classe:
@Service
public class MyClass {
@Value("${username}")
private String username;
...
}
Par conséquent, le nom d'utilisateur est défini sur littéralement"${username}"
, donc l'expression n'est pas analysée. Mes autres dépendances câblées automatiquement sur cette classe sont définies, et Spring ne lève aucune exception. J'ai également essayé d'ajouter @Autowired
mais cela n'a pas aidé.
Si j'analyse des propriétés dans un bean distinct, puis j'utilise @Autowired
+ @Qualifier
, Ça marche:
<bean id="username" class="Java.lang.String">
<constructor-arg value="${username}"/>
</bean>
Toutes les idées comment utiliser juste @Value
? Peut-être que je dois inclure une dépendance Spring que je n'ai pas? Je vous remercie
J'ai trouvé quel était le problème. Copiez/collez à partir des commentaires:
Êtes-vous sûr d'avoir <context:property-placeholder>
dans le même contexte d'application que votre bean MyClass (pas dans le contexte parent)? - axtavt
Vous avez raison. J'ai déménagé <context:property-placeholder>
du contexte défini par ContextLoaderListener
au contexte de servlet. Maintenant, mes valeurs sont analysées. Merci beaucoup! - alex