[JAVA] [Spring Boot] L'histoire selon laquelle le bean de la classe avec l'annotation ConfigurationProperties n'a pas été trouvé

Que sont les propriétés de configuration?

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.

Je ne connais pas le nom du haricot

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.

Essayer de trouver

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

[Spring Boot] L'histoire selon laquelle le bean de la classe avec l'annotation ConfigurationProperties n'a pas été trouvé
Une histoire remplie des bases de Spring Boot (résolu)
L'histoire de la rencontre avec l'annotation personnalisée Spring
L'histoire de la montée de la série Spring Boot 1.5 à la série 2.1
Accédez au h2db intégré de Spring Boot avec jdbcTemplate
L'histoire de la montée de Spring Boot de la série 1.5 à la série 2.1 part2
Introduction de la bibliothèque ff4j qui réalise le basculement de fonctionnalités avec Spring Boot
[Gradle] L'histoire selon laquelle le fichier de classe n'existait pas dans le fichier jar
Une histoire qui m'a fait regretter quand une "NotReadablePropertyException" s'est produite pendant le développement de l'application Spring Boot.
Une histoire qui a eu du mal avec l'introduction de Web Apple Pay
Voir le comportement des mises à jour d'entités avec Spring Boot + Spring Data JPA
L'histoire selon laquelle les performances de traitement d'ARM d'Open JDK étaient faibles
L'histoire de rendre possible la construction d'un projet qui a été construit par Maven avec Ant
[Java] L'histoire selon laquelle le tableau attendu n'a pas été obtenu par la méthode String.split.
Test de validation de classe de formulaire avec Spring Boot
Lors de l'introduction de JOOQ dans Spring Boot, une histoire qui a été traitée parce qu'une erreur s'est produite autour de Liquidbase
Présentation de Spring Boot Actuator, une fonctionnalité qui facilite l'utilisation des applications Spring Boot
Organisez les différences de comportement de @NotBlank, @NotEmpty et @NotNull avec Spring Boot + Thymeleaf
Obtenez le nom de classe et le nom de méthode du contrôleur exécuté par le HandlerInterceptor de Spring Boot
Obtenez le chemin défini dans la classe Controller de Spring Boot sous forme de liste
Paramètres du gestionnaire de ressources lors de la livraison du SPA avec la fonction de ressource statique de Spring Boot
L'histoire du réglage de l'application Android avec libGDX
Lorsque @Transactional of Spring Boot ne fonctionne pas
L'histoire du port devenant inutilisable dans l'exemple de programme Spring Boot
Notez que j'étais accro au traitement par lots avec Spring Boot
Personnalisez l'affichage lorsqu'une erreur telle que 404 Not Found se produit dans Spring Boot
Spécifiez le codage des ressources statiques dans Spring Boot
Changer d'environnement avec Spring Boot application.properties et l'annotation @Profile
05. J'ai essayé de supprimer la source de Spring Boot
L'histoire de la création d'un proxy inverse avec ProxyServlet
J'ai essayé de réduire la capacité de Spring Boot
Créer Restapi avec Spring Boot (jusqu'à l'exécution de l'application)
Comment démarrer par environnement avec Spring Boot de Maven
Contrôlez le flux de traitement Spring Batch avec JavaConfig.
Téléchargement de fichiers avec Spring Boot (ne pas utiliser de fichier en plusieurs parties)
L'histoire de la création de DTO, semblable à Dao avec Java, SQLite
L'histoire selon laquelle la mise à jour forcée n'a pas pu être mise en œuvre
L'histoire qui a conduit à résoudre l'erreur car postgres n'a pas commencé avec docker-compose up
L'histoire selon laquelle le paramètre de requête de l'application iPhone n'a pas pu être obtenu avec le servlet
Comment utiliser la même classe Mapper dans plusieurs sources de données avec Spring Boot + MyBatis
La version de Ruby installée par défaut sur le Mac a été référencée, pas de rbenv