Spring Boot @Propriétés De Valeur
J'ai un Ressort de Démarrage de l'application et dans l'une des classes, j'essaie de faire référence à une propriété de l'application.fichier de propriétés à l'aide de @Value
. Mais, la propriété ne sont pas résolus. J'ai regardé des postes similaires et essayé de suivre les suggestions, mais cela n'a pas aidé. La classe est:
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class PrintProperty {
@Value("${file.directory}")
private String fileDirectory;
public void print() {
System.out.println(fileDirectory);
}
}
J'ai le fichier de propriétés.répertoire dans application.properties
. J'ai d'autres domaines aussi bien.
Montrez-nous l'erreur que vous recevez, Vérifiez ma réponse ci-dessous, il doit travailler.
J'ai donné la bonne réponse ci-dessous. Apprécierait accepté de répondre 🙂
J'ai donné la bonne réponse ci-dessous. Apprécierait accepté de répondre 🙂
OriginalL'auteur user6641655 | 2016-08-19
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème comme vous. Voici mon code d'erreur.
Ce n'est pas un problème comme ça, mais
nous avons besoin de l'utiliser comme ceci:
pas comme cela:
résolu mon problème, aucune idée de pourquoi cela se produit ?
en bref, "l'Injection de Dépendance'. Vous ne créez pas de haricots objets à l'aide de
new
opérateur au lieu de cela, vous utilisez les haricots créé par spring framework à l'aide de@Autowired
annotation. Quand le printemps application démarre, il crée de haricots et de définir ses champs, maintenant, si vous n'utilisez pas ce bean et au lieu d'utiliser votre propre objet créé à l'aide denew
opérateur, vous obtiendrez la valeur null dans la variable de propriété.OriginalL'auteur 牛向辉
Assurez-vous que votre application.fichier de propriétés est sous src/main/resources/de l'application.les propriétés. Est une façon d'aller. Puis ajouter @PostConstruct comme suit
Exemple D'Application.propriétés
Échantillon De La Classe Java
Code ci-dessus affichera "somePlaceOverhere"
@PostConstruct
va initialiser tous les champs qui dépendent de ceux initialisée par@Value
annotation. MerciAprès beaucoup de recherche BeanPostProcessors
@PostConstruct
annotation ont aidé à résoudre le problème. Pour lire les propriétés de dans@Configuration and @Value
. merci.OriginalL'auteur Jesse
Id tiens à mentionner que j'ai utilisé le printemps de démarrage de la version 1.4.0 et depuis cette version, vous ne pouvez écrire:
Ensuite injecter de classe à chaque fois que vous le souhaitez.
OriginalL'auteur Peter S.
Pour lire les valeurs de la demande.propriétés nous avons juste besoin de les annoter notre classe principale avec
@SpringBootApplication
et la classe où vous lisez avec @Composant ou de la variété. Ci-dessous est l'exemple où j'ai lu les valeurs deapplication.properties
et il fonctionne très bien lorsque le service web est appelé. Si vous déployez le même code que est et essayez d'accéder à de http://localhost:8080/hello, vous obtiendrez la valeur que vous avez stockées dans l'application.propriétés de la clé de message.Essayez et laissez-moi savoir
Essayez d'ajouter @Composant d'annotation pour votre classe et laissez-moi savoir ce qui s'est passé
J'ai essayé @Composant et cela ne fonctionne pas.
Ce code fonctionne très bien comme c'est pour les web app. Je l'ai essayé. Mais, ne pas fonctionne parfois pour application autonome. Pas sûr de ce que sont les raisons pour lesquelles il.
OriginalL'auteur rajadilipkolli
Que vous êtes à l'aide de Spring boot, le seul moyen je pense qu'actuellement, il ne fonctionne pas c'est parce que vous n'avez pas ajouté le
@PropertySource
annotation.S'il vous plaît essayez-la et laissez-moi savoir vos commentaires. Merci!
avez-vous résolu le problème? laissez-nous savoir votre avis sur cette?
J'ai essayé les deux façons, mais n'a pas fonctionné.
OriginalL'auteur kukkuz
Vous n'avez pas compris les déclarations dans l'OP, mais il est possible que ni
@SpringBootApplication
ni@ComponentScan
sont l'analyse de vos@Component
.La
@ComponentScan
Javadoc états:ISTR de gaspiller beaucoup de temps avant et il a trouvé plus facile de simplement déplacer ma classe d'application à le plus forfait de mon application de l'arbre.
Plus récemment, j'ai rencontré une chasse aux sorcières étaient la propriété était en train de lire avant la valeur de l'insertion a été fait. Jesse la réponse de l'aider
@PostConstruct
semble être le plus tôt vous pouvez lire les valeurs insérées, et bien sûr, vous devez laisser le Printemps appeler cette.OriginalL'auteur Simon Gibbs
Votre problème est que vous avez besoin d'un
static
PropertySourcesPlaceholderConfigurer
Bean définition dans votre configuration. Je dis statique avec l'accent, parce que j'ai eu un non-statique et ça ne fonctionne pas.OriginalL'auteur Dormouse
J'ai eu le même problème et les exemples ci-dessus ne m'aide pas à lire les propriétés. J'ai posté la classe complète qui vous aidera à lire les valeurs de propriétés de l'application.fichier de propriétés dans SpringBoot application dans le lien ci-dessous.
Printemps de l'Environnement de Démarrage @Autocâblés jette NullPointerException
OriginalL'auteur Nallamachu