L'une des méthodes pour gérer la valeur du fichier de paramètres dans Spring Boot par l'application.
application.yaml
sample:
hoge: hogeValue
huga: hugaValue
piyo: piyoValue
Lorsqu'il y a une valeur de réglage telle que
package com.wakye.property
import ........
@ConstructorBinding
@ConfigurationProperties("sample")
data class SampleProperty(
val hoge: String,
val huga: String,
val piyo: String
)
En ajoutant l'annotation ConfigurationProperties à la classe qui a le champ correspondant à la valeur de paramètre de cette manière, la valeur est liée puis enregistrée en tant que bean.
L'annotation ConstructorBinding n'a rien à voir avec la ligne principale, mais si vous développez une application SpringBoot avec kotlin, elle est utilisée pour ajouter l'annotation ConfigurationProperties à la classe de données.
Maintenant, le problème est d'obtenir ce bean.
Normalement, il n'y a pas de problème pour que la fonction de Spring Boot soit injectée en tant que constructeur.
Cependant, j'ai dû obtenir le bean enregistré en spécifiant le nom du bean, mais il y avait un problème. En utilisant la méthode getBean définie dans ApplicationContext, il est possible d'obtenir le bean enregistré à partir du nom du bean.
Dans Spring Boot, le nom du bean prend par défaut le nom de classe minuscule camel case. (Le nom de la classe est défini uniquement dans la casse supérieure du chameau, donc peut-être que la bataille est juste en lettres minuscules)
Alors
applicationContext.getBean("sampleProperty")
J'ai essayé de l'obtenir comme ça, mais une exception s'est produite, et il semble que le bean défini comme sampleProperty n'existe pas.
Quelques heures pour google. .. .. .. .. .. ..
Retrouvez ces descriptions dans la documentation! !! !!
Lorsque le bean @ConfigurationProperties est enregistré de cette façon, le bean a le nom traditionnel \
- \ . est le préfixe de clé d'environnement spécifié dans l'annotation @ConfigurationProperties et est le nom complet du bean. Si l'annotation ne fournit pas de préfixe, seul le nom complet du bean est utilisé.
[Citation du document officiel](https://spring.pleiades.io/spring-boot/docs/2.1.3.RELEASE/reference/html/boot-features-external-config.html#boot-features-external-config- typesafe-configuration-properties)
Apparemment, il ne s'enregistre pas avec un nom de bean normal.
Dans ce cas
le préfixe est «échantillon»
fqn est com.wakye.property
Donc, le nom du haricot est
sample-com.wakye.property.SampleProperty
Il semble que.
applicationContext.getBean("sample-com.wakye.property.SampleProperty")
Acquisition réussie ici.
C'était un écueil difficile à comprendre.
Recommended Posts