--- title: spring-projects/spring-petclinic — Spring 공식 reference sample 애플리케이션 source_type: official-doc url: https://github.com/spring-projects/spring-petclinic archive_url: status: raw confidence: high tags: [ca-tmpl, sample-fixture, spring-petclinic, reference-sample, github-reference, official-doc] related_projects: [ca-tmpl] related_branches: [feature-sample-domain-contract-fixture] created: 2026-05-22 last_reviewed: 2026-05-27 --- # spring-projects/spring-petclinic — Spring 공식 reference sample 애플리케이션 > Layer: `raw/official-docs/` — `spring-projects/spring-petclinic` GitHub 저장소 README 발췌. ca-tmpl Group G — Sample domain contract fixture 의 대안 1 (Spring 공식 reference sample) 의 1차 근거. ## Parent / 활용 branch (필수) | Branch | 이 자료가 정당화하는 결정 | |---|---| | [[raw/branch-notes/feature-sample-domain-contract-fixture]] | Group G 대안 1 — Spring 공식 reference sample 도메인 (Owner/Pet/Visit/Vet) 이 ca-tmpl sample-ticket (12 scenario + state machine + idempotency) 비교의 대조축 근거 | 상위 프로젝트: [[raw/project-notes/ca-skeleton-operational-contract]]. ## 컨텍스트 / 왜 저장했는지 ca-tmpl의 sample domain fixture 결정(sample-ticket 12-scenario matrix + 6-field minimum model + 상태 머신 + optimistic lock + idempotency key)에 대한 대안 1로, Spring 진영에서 가장 오래/널리 인용되는 sample 애플리케이션. "공식 reference sample이 어떤 모델을 들고 가는가"의 비교점. ## 출처 / Source - 원본 URL: https://github.com/spring-projects/spring-petclinic - 아카이브 URL: (미수집) - 저자/조직: spring-projects (VMware/Broadcom Spring 팀, 공식) - 라이선스: Apache-2.0 - Star 수: 8,000+ (공식 reference 등급) - 마지막 확인일: 2026-05-27 ## 핵심 인용 / Key quotes (verbatim) > [§README — Overview] "The Spring PetClinic Sample Application — designed to show how the Spring stack can be used to build simple, but powerful database-oriented applications." > [§README — Stack] "It demonstrates the use of Spring Boot, Spring Data JPA, Spring MVC, Thymeleaf, Bean Validation." > [§README — Variants] "Several variants of the Spring Petclinic application are maintained: Spring Petclinic with Spring AI, REST, GraphQL, Kotlin, microservices, reactive..." > [§README — Disclaimer] "PetClinic is intended to be a demonstration of how the Spring Framework can be used. It is not intended as a 'best practice' for any real world application." ## Claims Extracted / 추출된 주장 | Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove | |---|---|---|---|---|---| | SAMPLE-PC-C1 | Spring PetClinic 은 Spring stack 이 어떻게 simple but powerful database-oriented application 을 빌드하는지 보여주기 위해 설계된 sample application 이다 | [§README — Overview] "The Spring PetClinic Sample Application — designed to show how the Spring stack can be used to build simple, but powerful database-oriented applications." | `official-vendor-doc` | Spring stack 학습용 reference | "production-ready 패턴" 또는 "엔터프라이즈 패턴 reference" 라는 뜻은 아님 | | SAMPLE-PC-C2 | PetClinic 은 Spring Boot, Spring Data JPA, Spring MVC, Thymeleaf, Bean Validation 의 사용을 시연한다 | [§README — Stack] "It demonstrates the use of Spring Boot, Spring Data JPA, Spring MVC, Thymeleaf, Bean Validation." | `official-vendor-doc` | 이 5개 Spring 컴포넌트의 통합 예시 학습 | reactive / GraphQL / Kotlin 등 다른 stack 의 demo 라는 뜻은 아님 (그것은 variants — `SAMPLE-PC-C3`) | | SAMPLE-PC-C3 | Spring AI, REST, GraphQL, Kotlin, microservices, reactive 등 여러 variant 가 함께 유지된다 | [§README — Variants] "Several variants of the Spring Petclinic application are maintained: Spring Petclinic with Spring AI, REST, GraphQL, Kotlin, microservices, reactive..." | `official-vendor-doc` | PetClinic 도메인 위에 다양한 stack 비교 학습 | 모든 variant 가 동일한 maintenance level / 최신성 / Spring 공식 보증 등급을 가진다는 뜻은 아님 | | SAMPLE-PC-C4 | PetClinic 은 Spring Framework 사용 방법의 demonstration 의도이며, real-world application 의 "best practice" 로 의도되지 않았다 (공식 disclaimer) | [§README — Disclaimer] "PetClinic is intended to be a demonstration of how the Spring Framework can be used. It is not intended as a 'best practice' for any real world application." | `official-vendor-doc` | PetClinic 코드를 실무 reference 로 차용할 때의 한계 인식 | "PetClinic 의 모든 패턴이 잘못되었다" 는 뜻은 아님 — 단지 best-practice 로 의도되지 않았다는 사실 | ## Usage Boundaries / 적용 경계 - **이 자료가 직접 증명하는 것**: - `SAMPLE-PC-C1`: PetClinic 의 목적 (Spring stack demo) - `SAMPLE-PC-C2`: 시연되는 5개 Spring 컴포넌트 (Spring Boot / Data JPA / MVC / Thymeleaf / Bean Validation) - `SAMPLE-PC-C3`: 유지되는 variants 의 종류 - `SAMPLE-PC-C4`: best-practice 가 아니라는 공식 disclaimer (가장 중요한 근거 — ca-tmpl reference 차용 시 위험 신호) - **이 자료가 증명하지 않는 것**: - PetClinic 도메인 (Owner / Pet / Visit / Vet) 의 정확한 entity 관계 (인용은 README 상위만 — 자세한 모델은 별도 페이지 / 코드 참조 필요) - PetClinic 이 idempotency key / optimistic lock / state machine / scenario matrix 를 포함하지 않는다는 사실의 공식 진술 (인용 범위 밖 — ca-tmpl 비교 메모의 해석) - PetClinic variants 중 어느 것이 production reference 로 권장되는지 - PetClinic 의 README 가 가장 최신이라는 보장 (rolling docs) - **내 프로젝트에 적용하려면 추가 확인이 필요한 것**: - ca-tmpl sample-ticket 의 12-scenario matrix 가 PetClinic 의 어떤 entity / 시나리오에 매핑 가능한지 (혹은 mapping 불가능한 contract 부분) - PetClinic 의 best-practice disclaimer 가 ca-tmpl 의 "skeleton 계약 검증 fixture" 모델을 정당화하는 강한 근거인지 (해석 필요) - PetClinic microservices variant 의 patterns 가 ca-tmpl 의 sample-on/off matrix 와 충돌하지 않는지 ## 메모 - 도메인: Owner / Pet / Visit / Vet — 4 entity, 1:N + many-to-many 학습 목적. - 결정적 차이: petclinic은 "Spring stack 학습용 demo"라고 README에 명시. ca-tmpl sample-ticket은 "contract fixture(skeleton 계약 검증)"이 목적. **petclinic은 best-practice가 아니라고 본인이 선언함** — ca-tmpl이 reference로 차용하기는 위험. - 모델 깊이: petclinic은 idempotency key, optimistic lock, state machine, scenario matrix가 없음. ca-tmpl sample-ticket(12 scenario + OPEN→IN_PROGRESS→CLOSED) 쪽이 contract 검증 도구로는 더 적합. - 장점: 모든 Spring 개발자 공통 어휘. 변종(REST/GraphQL/microservices) 다수 → 다양한 비교 가능. - 단점: 도메인이 CRUD 위주라 상태 머신/optimistic lock/idempotent create 같은 contract 검증 시나리오가 빠짐. - 신뢰도: official-doc, spring-projects org → 기준 reference로 인용 가능. ## Related / 관련 - 같은 주제 다른 official-doc (Group G — Sample domain contract fixture 대안들): - (대안 2: RealWorld — 미수집) - (대안 3: Spring microservices sample — 미수집) - (대안 4: Stripe testmode shopping cart — 미수집) - (대안 5: No fixture — 비교 baseline) - 인용하는 branch: - [[raw/branch-notes/feature-sample-domain-contract-fixture]] - canonical contract 섹션: - [[raw/project-notes/ca-skeleton-operational-contract#17. Sample Domain Fixture]] - [[raw/project-notes/ca-skeleton-operational-contract#22. Sample-portfolio Contract Matrix]] - 인용하는 wiki: (미작성)