{ "title": "`application-core`는 왜 Spring DI만 허용했을까", "document_type": "technical_blog", "language": "ko-KR", "audience": { "roles": [ "Java 백엔드 개발자", "Clean Architecture를 적용하는 팀" ], "prior_knowledge": [ "Spring component scanning의 기본 개념", "Gradle multi-module의 기본 개념" ], "needs": [ "application layer의 framework 의존 경계를 판단할 기준", "선택 이유와 자동 검증 방법" ] }, "reader_goal": "`application-core`에서 Spring DI는 허용하면서 transaction, web, persistence 의존은 금지한 이유와 트레이드오프를 설명할 수 있다", "core_message": "framework-free라는 구호보다 의존 목적을 좁히고 자동 검증하는 편이 이 프로젝트의 문제에 맞았다. bean 등록을 위한 Spring DI는 허용하되 transaction, transport, persistence 정책은 application 경계 밖에 남겼다.", "scope": [ "ca-tmpl의 `application-core` 의존성 결정", "Spring DI 허용 이유", "Gradle과 ArchUnit을 통한 경계 검증" ], "non_scope": [ "모든 Clean Architecture 프로젝트의 보편 규칙", "SLF4J 사용 이유", "운영 환경 성능 검증" ], "prerequisites": [ "Spring의 `@Service`, `@Component`, `@Configuration` 역할을 구분할 수 있음" ], "required_topics": [ "수동 bean 등록의 조립 코드 비용", "Spring DI 허용 범위", "`spring-tx`, Spring Web, JPA 금지", "`TransactionPort`", "Gradle dependency matrix", "ArchUnit rule과 정적 분석 한계" ], "constraints": { "target_words": 1500, "tone": "프로젝트 문제와 선택 근거를 먼저 밝히는 직접적인 한국어 기술 블로그 문체", "version_context": "", "max_heading_depth": 3, "require_citations": true, "allow_external_knowledge": false, "citation_style": "hidden", "date_policy": "only_when_material", "style_profile": "woowahan_tech_blog_ko" }, "forbidden_claims": [ "application-core는 framework-free다", "SLF4J를 의도적으로 사용한다", "운영에서 검증했다" ], "metadata": { "owner": "architecture", "risk": "medium", "example_kind": "golden-reader-facing" } }