--- kind: CONCEPT slug: adapter-outbound-persistence-jpa-c20 title: 참조 수가 0이어도 스캔으로 도달한다 topic: transaction-and-consistency-models project: clean-architecture-backend-template status: 게시 전 sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 rootTreeNode: concept:adapter-outbound-persistence-jpa-c20 evidenceCapturedOn: 2026-09-01 assets: - key: adapter-outbound-persistence-jpa-c20 file: ../../../final/evidence/rendered/adapter-outbound-persistence-jpa-c20.svg evidence: - ../../../final/evidence/raw/adapter-outbound-persistence-jpa-c20.txt source: - 원본 분석 절은 analysis/05-adapter-outbound-persistence-jpa.md#L1334 이다. module: adapter-outbound-persistence-jpa --- # 참조 수가 0이어도 스캔으로 도달한다 `JpaTransactionConfig`는 direct production reference가 거의 없지만 `@Configuration` + `@EnableConfigurationProperties`이고 `JpaAdapterComponentsConfig`가 transaction package를 component scan한다. ## 본문 `JpaTransactionConfig`도 direct production reference는 거의 없다. 하지만 이 class는 `@Configuration` + `@EnableConfigurationProperties(JpaTransactionSettings.class)`이고, `JpaAdapterComponentsConfig`가 transaction package를 component scan한다. 따라서 direct Java call/import가 0이어도 runtime reachability가 있다. ## JpaTransactionConfig 참조 위치 :::evidence key="adapter-outbound-persistence-jpa-c20" alt="코드베이스에서 JpaTransactionConfig 를 검색한 출력 2줄. 이 기록이 세는 참조가 그 출력에 그대로 보인다." caption="JpaTransactionConfig 코드베이스 검색 — 2줄 · exit 0" zoom="true" ::: ## 이 클래스가 기록한 이력 - root `@ConfigurationPropertiesScan`에서 optional persistence tree 제외 - JPA on 상태에서도 settings가 아무도 bind하지 않던 문제 발생 - transaction port construction 실패 - package-local configuration으로 JPA master switch 안에서만 settings enable ## 참조 수만으로 dead code를 찾으면 안 되는 이유 이 사례는 mandatory public-reachability probe가 필요한 이유를 잘 보여준다. static reference count만으로 dead code를 찾으면 Spring discovery path를 오탐한다.