Spring Bean Factory XML — Dasel v3 질의 패턴은(는) 무엇을 하나요?
<when_to_use>
이 스킬은 Spring 빈 XML 파일 — applicationContext.xml, *_beans.xml, spring-context.xml 또는 모든 Spring ApplicationContext XML — 을 질의할 때 로드하세요. 빈 탐색, 의존성 분석, JMS 와이어링, 속성 주입 감사 또는 빈 간 참조 추적에 사용됩니다.
</when_to_use>
Spring 빈 팩토리 XML을 위한 Dasel v3 선택자 패턴입니다. 항상 -i xml을 명시적으로 전달하세요.
속성 접두사 규칙: Dasel의 기본 친화 모드(friendly mode)는 XML 속성 앞에 -를 접두사로 붙입니다. id 속성은 -id, class는 -class가 됩니다. 텍스트 내용은 #text입니다.
빈 탐색
# 모든 빈 ID
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(has("-id")).map("-id")'
# 모든 빈 클래스
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(has("-class")).map("-class")'
# 모든 빈에 대해 -class 매핑 (-id가 없는 빈 포함)
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.map("-class")'
클래스 패턴 매칭
-class에 정규표현식을 사용하여 클래스 이름으로 빈을 필터링합니다.
# 클래스에 JmsTemplate이 포함된 빈
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(-class ~ ".*JmsTemplate.*").map("-id")'
# 클래스 패턴과 일치하는 빈 개수 세기
cat beans.xml | dasel -i xml 'len(beans.bean.filter(-class ~ ".*Jms.*"))'
의존성 연결 분석
property 자식 요소의 -ref 속성을 통해 다른 빈을 참조하는 빈을 찾습니다.
패턴: parentCollection.filter(childElement.filter(condition).len($this) > 0) — 일치하는 자식이 존재하는지(길이 > 0) 테스트하여 부모를 필터링합니다.
# ref 속성을 통해 특정 빈 ID를 참조하는 빈
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(property.filter(-ref == "targetBeanId").len($this) > 0).map("-id")'
JMS 대상 매핑
property 자식 요소를 통해 어떤 빈이 어떤 JMS 대상을 소비하는지 찾습니다.
# 특정 대상 속성에 연결된 빈
cat integrationpoint_beans.xml | dasel -i xml 'beans.bean.filter(property.filter(-name == "destination").len($this) > 0).map("-id")'
속성 주입 추출
빈 정의에서 외부화된 ${...} 플레이스홀더 값을 추출합니다.
# ${...} 플레이스홀더를 사용하는 모든 속성 값
cat storage_beans.xml | dasel -i xml 'beans.bean.property.filter(-value ~ ".*\\$\\{.*\\}.*").map("-value")'
속성 및 텍스트 내용 접근
# <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
# 첫 번째 빈의 모든 키(속성 + 자식 요소) 확인
cat beans.xml | dasel -i xml 'beans.bean[0].keys($this)'
네임스페이스 처리
친화 모드는 요소 이름에서 네임스페이스 접두사를 제거합니다. 대부분의 Spring 질의에서 작동합니다.
네임스페이스 접두사로 인해 선택자가 실패하는 경우(요소가 존재하지만 찾을 수 없음) 구조화 모드로 전환하세요:
cat spring-context.xml | dasel -i xml --read-flag xml-mode=structured 'beans.bean[0]'
파일 간 분석
중간 결과는 항상 /tmp/에 기록하세요. 소스 트리에 절대 기록하지 마십시오.
# 여러 파일에서 빈 ID 추출 후 비교
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