Padrões de Consulta Dasel v3 para XML do Spring Bean Factory
<when_to_use>
Carregue esta skill ao consultar qualquer arquivo XML de bean do Spring — applicationContext.xml, *_beans.xml, spring-context.xml, ou qualquer XML de ApplicationContext do Spring — para descoberta de beans, análise de dependências, ligação JMS, auditoria de injeção de propriedades ou rastreamento de referências entre beans.
</when_to_use>
Padrões de seletor Dasel v3 para XML de fábrica de beans do Spring. Sempre passe -i xml explicitamente.
Regra de prefixo de atributo: O modo amigável (padrão) do Dasel prefixa atributos XML com -. O atributo id é -id, class é -class. O conteúdo de texto é #text.
Descoberta de Beans
# Todos os IDs de beans
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(has("-id")).map("-id")'
# Todas as classes de beans
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(has("-class")).map("-class")'
# Mapear -class em cada bean (inclui beans sem -id)
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.map("-class")'
Correspondência de Padrões de Classe
Filtrar beans por nome de classe via regex em -class.
# Beans cuja classe contém JmsTemplate
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(-class ~ ".*JmsTemplate.*").map("-id")'
# Contar beans que correspondem a um padrão de classe
cat beans.xml | dasel -i xml 'len(beans.bean.filter(-class ~ ".*Jms.*"))'
Análise de Ligação de Dependências
Encontrar beans que referenciam outros beans através do atributo -ref em elementos property filhos.
Padrão: parentCollection.filter(childElement.filter(condition).len($this) > 0) — filtra o pai testando se existe um filho correspondente (comprimento > 0).
# Beans que referenciam um ID de bean específico via atributo ref
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(property.filter(-ref == "targetBeanId").len($this) > 0).map("-id")'
Mapeamento de Destinos JMS
Encontrar quais beans consomem quais destinos JMS via elementos property filhos.
# Beans conectados a uma propriedade de destino específica
cat integrationpoint_beans.xml | dasel -i xml 'beans.bean.filter(property.filter(-name == "destination").len($this) > 0).map("-id")'
Extração de Injeção de Propriedades
Extrair valores de placeholders externalizados ${...} das definições de beans.
# Todos os valores de propriedade usando placeholders ${...}
cat storage_beans.xml | dasel -i xml 'beans.bean.property.filter(-value ~ ".*\\$\\{.*\\}.*").map("-value")'
Acesso a Atributos e Conteúdo de Texto
# <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
# Descobrir todas as chaves (atributos + elementos filhos) no primeiro bean
cat beans.xml | dasel -i xml 'beans.bean[0].keys($this)'
Manipulação de Namespaces
O modo amigável remove os prefixos de namespace dos nomes de elementos — funciona para a maioria das consultas Spring.
Quando os prefixos de namespace causarem falhas no seletor (elemento não encontrado apesar de existir), mude para o modo estruturado:
cat spring-context.xml | dasel -i xml --read-flag xml-mode=structured 'beans.bean[0]'
Análise de Múltiplos Arquivos
Escreva resultados intermediários em /tmp/ — nunca na árvore de origem.
# Extrair IDs de beans de vários arquivos, comparar
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