J'utilise le ressort. J'ai besoin de lire les valeurs du fichier de propriétés. Il s'agit du fichier de propriétés interne et non du fichier de propriétés externes. Le fichier de propriétés peut être comme ci-dessous.
some.properties ---file name. values are below.
abc = abc
def = dsd
ghi = weds
jil = sdd
J'ai besoin de lire ces valeurs à partir du fichier de propriétés pas de manière traditionnelle. Comment y parvenir? Existe-t-il une dernière approche avec Spring 3.0?
spring
properties-file
utilisateur1016403
la source
la source
Réponses:
Configurez PropertyPlaceholder dans votre contexte:
Ensuite, vous vous référez aux propriétés de vos beans:
EDIT: mise à jour du code pour analyser la propriété avec plusieurs valeurs séparées par des virgules:
Si cela ne fonctionne pas, vous pouvez définir un bean avec des propriétés, l'injecter et le traiter manuellement:
et le haricot:
la source
aaa
? Est-ce@Value(${aaa}) private String aaa;
alors que nous pouvonsSystem.out.println(aaa)
???????@Value("${aaa}")
, faites attention aux citations. Et oui, vous pouvez l'imprimer sauf pas dans le constructeur car le constructeur est exécuté avant que les valeurs ne soient injectées.Il existe différentes manières d'atteindre la même chose. Vous trouverez ci-dessous quelques méthodes couramment utilisées au printemps.
Utilisation de PropertyPlaceholderConfigurer
Utilisation de PropertySource
Utilisation de ResourceBundleMessageSource
Utilisation de PropertiesFactoryBean
et beaucoup plus........................
En supposant que
ds.type
c'est la clé dans votre fichier de propriété.En utilisant
PropertyPlaceholderConfigurer
Enregistrer
PropertyPlaceholderConfigurer
bean-ou
ou
Après vous être enregistré
PropertySourcesPlaceholderConfigurer
, vous pouvez accéder à la valeur-En utilisant
PropertySource
Dans la dernière version de printemps , vous n'avez pas besoin de vous inscrire
PropertyPlaceHolderConfigurer
avec@PropertySource
, j'ai trouvé un bon lien pour comprendre la version compatibility-En utilisant
ResourceBundleMessageSource
Enregistrer Bean-
Valeur d'accès-
ou
En utilisant
PropertiesFactoryBean
Enregistrer Bean-
Wire Properties dans votre classe
la source
En classe de configuration
la source
app.properties
en production v. Testing? En d'autres termes, une partie de votre processus de déploiement consisterait-elle à remplacerapp.properties
par des valeurs de production?Voici une réponse supplémentaire qui m'a également été d'une grande aide pour comprendre son fonctionnement: http://www.javacodegeeks.com/2013/07/spring-bean-and-propertyplaceholderconfigurer.html
la source
PropertySourcesPlaceholderConfigurer
Bean avec@PropertySource
@PropertySource
.Si vous devez lire manuellement un fichier de propriétés sans utiliser @Value.
Merci pour la page bien écrite de Lokesh Gupta: Blog
la source
Vous devez placer un bean PropertyPlaceholderConfigurer dans le contexte de votre application et définir sa propriété d'emplacement.
Voir les détails ici: http://www.zparacha.com/how-to-read-properties-file-in-spring/
Vous devrez peut-être modifier un peu votre fichier de propriété pour que cela fonctionne.
J'espère que ça aide.
la source
Une autre façon consiste à utiliser un ResourceBundle . En gros, vous obtenez le bundle en utilisant son nom sans le '.properties'
Et vous récupérez n'importe quelle valeur en utilisant ceci:
la source
la source
Je vous recommande de lire ce lien https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html de la documentation SpringBoot sur l'injection de configurations externes. Ils ne parlent pas seulement de la récupération à partir d'un fichier de propriétés, mais aussi de fichiers YAML et même JSON. J'ai trouvé cela utile. J'espère que vous aussi.
la source
Je voulais une classe utilitaire qui n'est pas gérée par spring, donc pas d'annotations de printemps comme
@Component
,@Configuration
etc. Mais je voulais que la classe lise à partir deapplication.properties
J'ai réussi à le faire fonctionner en faisant en sorte que la classe soit consciente du contexte Spring, donc en soit consciente
Environment
, etenvironment.getProperty()
fonctionne donc comme prévu.Pour être explicite, j'ai:
application.properties
Utils.java
ApplicationContextProvider.java (voir Spring obtenir le ApplicationContext actuel )
la source