Printemps @Valeur n'est pas la résolution de la valeur de la propriété de fichier
J'ai eu ce travail dans un autre projet, je suis viens de re-faire la même chose mais pour une raison que ça ne fonctionne pas. Le Printemps @Value
n'est pas de lecture de fichier de propriété, mais c'est plutôt prenant la valeur littéralement
AppConfig.java
@Component
public class AppConfig
{
@Value("${key.value1}")
private String value;
public String getValue()
{
return value;
}
}
applicationContext.xml:
<context:component-scan
base-package="com.test.config" />
<context:annotation-config />
<bean id="appConfigProperties"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:appconfig.properties" />
</bean>
appconfig.propriétés
key.value1=test value 1
Dans mon contrôleur, où j'ai:
@Autowired
private AppConfig appConfig;
L'application démarre très bien, mais quand je fais
appConfig.getValue()
il retourne
${key.value1}
Qu'elle ne résout pas à la valeur à l'intérieur du fichier de propriétés.
Pensées?
- Dupliqué stackoverflow.com/questions/11890544/... et stackoverflow.com/questions/5275724/...
- Merci! n'ai pas trouvé ce thread, et la plupart de ceux que j'ai trouvé était liée à la valeur NULL
Vous devez vous connecter pour publier un commentaire.
J'ai aussi trouvé la raison
@value
n'était pas travail est,@value
nécessitePropertySourcesPlaceholderConfigurer
au lieu d'unPropertyPlaceholderConfigurer
. j'ai fait les mêmes changements et il a travaillé pour moi, je suis l'aide de printemps version 4.0.3.J'ai configuré ce à l'aide de code ci-dessous dans mon fichier de configuration -
Problème est dû à un problème dans mon applicationContext.xml vs spring-servlet.xml - elle a été portée entre les grains.
pedjaradenkovic veuillez m'a signalé une ressource existante:
Printemps @Valeur de l'annotation @Controller classe n'évaluant pas de valeur à l'intérieur du fichier de propriétés
et Printemps 3.0.5 ne pas évaluer @Valeur de l'annotation de propriétés
Dans mon cas, les champs statiques ne sera pas injecté.
Dans mon cas, j'ai été absent les accolades. J'ai eu
@Value("foo.bar") String value
au lieu de la forme correcte@Value("${foo.bar}") String value
pour Brin de démarrage de l'Utilisateur à la fois PropertyPlaceholderConfigurer et la nouvelle PropertySourcesPlaceholderConfigurer ajoutée au Printemps 3.1. il est donc simple d'accès du fichier de propriétés. juste injecter
Remarque: assurez-vous que votre propriété ne doit pas être
Static
J'ai été en utilisant le printemps de démarrage, et pour moi la mise à niveau de la version de
1.4.0.RELEASE
à1.5.6.RELEASE
à résoudre ce problème.Avoir une lecture de pedjaradenkovic commentaire.
Encore pour le lien qu'il fournit, la raison pour laquelle cela ne fonctionne pas, c'est que
@Value
traitement requiert unePropertySourcesPlaceholderConfigurer
au lieu d'unPropertyPlaceholderConfigurer
.