Que fait Spring Bean Factory XML — Modèles de requêtes Dasel v3 ?
<when_to_use>
Chargez cette compétence lors de l'interrogation de tout fichier XML de beans Spring — applicationContext.xml, *_beans.xml, spring-context.xml, ou tout XML de contexte d'application Spring — pour la découverte de beans, l'analyse de dépendances, le câblage JMS, l'audit d'injection de propriétés, ou le traçage de références entre beans.
</when_to_use>
Modèles de sélecteurs Dasel v3 pour le XML de fabrique de beans Spring. Passez toujours -i xml explicitement.
Règle de préfixe d'attribut : Le mode friendly de Dasel (par défaut) préfixe les attributs XML avec -. L'attribut id devient -id, class devient -class. Le contenu textuel est #text.
Découverte de beans
# Tous les IDs de beans
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(has("-id")).map("-id")'
# Toutes les classes de beans
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(has("-class")).map("-class")'
# Mapper -class sur chaque bean (inclut les beans sans -id)
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.map("-class")'
Correspondance de motifs de classe
Filtrez les beans par nom de classe via une expression régulière sur -class.
# Beans dont la classe contient JmsTemplate
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(-class ~ ".*JmsTemplate.*").map("-id")'
# Compter les beans correspondant à un motif de classe
cat beans.xml | dasel -i xml 'len(beans.bean.filter(-class ~ ".*Jms.*"))'
Analyse du câblage de dépendances
Trouvez les beans qui référencent d'autres beans via l'attribut -ref sur les éléments enfants property.
Motif : parentCollection.filter(childElement.filter(condition).len($this) > 0) — filtre le parent en testant si un enfant correspondant existe (longueur > 0).
# Beans qui référencent un ID de bean spécifique via l'attribut ref
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(property.filter(-ref == "targetBeanId").len($this) > 0).map("-id")'
Mappage de destinations JMS
Trouvez quels beans consomment quelles destinations JMS via les éléments enfants property.
# Beans câblés sur une propriété de destination spécifique
cat integrationpoint_beans.xml | dasel -i xml 'beans.bean.filter(property.filter(-name == "destination").len($this) > 0).map("-id")'
Extraction d'injection de propriétés
Extrayez les valeurs de placeholders externalisées ${...} des définitions de beans.
# Toutes les valeurs de propriétés utilisant des placeholders ${...}
cat storage_beans.xml | dasel -i xml 'beans.bean.property.filter(-value ~ ".*\\$\\{.*\\}.*").map("-value")'
Accès aux attributs et au contenu textuel
# <bean id="myBean" class="com.example.Foo">some text</bean>
cat beans.xml | dasel -i xml 'beans.bean[0].-id' # myBean
cat beans.xml | dasel -i xml 'beans.bean[0].-class' # com.example.Foo
cat beans.xml | dasel -i xml 'beans.bean[0].#text' # some text
# Découvrir toutes les clés (attributs + éléments enfants) sur le premier bean
cat beans.xml | dasel -i xml 'beans.bean[0].keys($this)'
Gestion des espaces de noms
Le mode friendly supprime les préfixes d'espace de noms des noms d'éléments — cela fonctionne pour la plupart des requêtes Spring.
Lorsque les préfixes d'espace de noms provoquent des échecs de sélecteurs (élément non trouvé malgré son existence), passez en mode structuré :
cat spring-context.xml | dasel -i xml --read-flag xml-mode=structured 'beans.bean[0]'
Analyse multi-fichiers
Écrivez les résultats intermédiaires dans /tmp/ — jamais dans l'arborescence source.
# Extraire les IDs de beans de plusieurs fichiers, comparer
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(has("-id")).map("-id")' > /tmp/chaosrouter_beans.txt
cat integrationpoint_beans.xml | dasel -i xml 'beans.bean.filter(has("-id")).map("-id")' > /tmp/integration_beans.txt
diff /tmp/chaosrouter_beans.txt /tmp/integration_beans.txt