{ "version": "1.1", "id": "three-assembly-paths", "title": "조립의 세 경로", "question": "빈은 어느 경로로 컨텍스트에 들어오는가?", "type": "architecture", "direction": "LR", "audience": [ "이 저장소의 구조를 읽는 사람" ], "summary": "컴포넌트 스캔과 자동 설정 imports 와 spring.factories 세 경로가 각각 다른 질문에 답한다.", "alt": "빈이 들어오는 경로에서 컴포넌트 스캔과 imports 와 spring.factories 세 갈래가 나온다.", "long_description": "SSOT 는 이 저장소에서 빈이 컨텍스트에 들어오는 경로가 셋이고 각각 다른 질문에 답한다고 적는다 — 컴포넌트 스캔, .imports, spring.factories 다.", "source_context": { "document": "/home/donghyeon/workspace/chat-gpt-container/document-haness/docs/clean-architecture-backend-template/final/document.md", "document_sha256": "8071fe71b3359d9cf60b95909c26c7b50653ce2f22bbc5fcf6988719bb91236d", "anchor": { "kind": "line", "value": 280, "line": 280 } }, "composition": { "profile": "ports-adapters", "diagram_only": true, "reference_ids": [ "order-ports-adapters" ], "rationale": "한 컨텍스트로 들어오는 입구가 셋이라는 것이 논지다.", "focus_node": "ctx" }, "groups": [], "nodes": [ { "id": "scan", "label": "컴포넌트 스캔", "kind": "adapter", "role": "inbound-adapter", "evidence": [ { "start_line": 266, "end_line": 295 } ], "assumption": false }, { "id": "imports", "label": ".imports", "kind": "adapter", "role": "inbound-adapter", "evidence": [ { "start_line": 266, "end_line": 295 } ], "assumption": false }, { "id": "entry", "label": "빈 등록 경로", "kind": "interface", "role": "port", "evidence": [ { "start_line": 266, "end_line": 295 } ], "assumption": false }, { "id": "ctx", "label": "스프링 컨텍스트", "kind": "domain", "role": "core", "evidence": [ { "start_line": 266, "end_line": 295 } ], "assumption": false, "emphasis": "primary" }, { "id": "early", "label": "기동 확장 지점", "kind": "interface", "role": "port", "evidence": [ { "start_line": 266, "end_line": 299 } ], "assumption": false }, { "id": "factories", "label": "spring.factories", "kind": "adapter", "role": "outbound-adapter", "evidence": [ { "start_line": 266, "end_line": 299 } ], "assumption": false } ], "edges": [ { "id": "a", "from": "scan", "to": "entry", "label": "스캔 등록", "kind": "request", "evidence": [ { "start_line": 266, "end_line": 295 } ], "assumption": false }, { "id": "b", "from": "imports", "to": "entry", "label": "자동설정 등록", "kind": "request", "evidence": [ { "start_line": 266, "end_line": 295 } ], "assumption": false }, { "id": "c", "from": "entry", "to": "ctx", "label": "빈 편입", "kind": "request", "evidence": [ { "start_line": 266, "end_line": 295 } ], "assumption": false, "emphasis": "primary" }, { "id": "d", "from": "ctx", "to": "early", "label": "기동 훅 요구", "kind": "request", "evidence": [ { "start_line": 266, "end_line": 299 } ], "assumption": false }, { "id": "e", "from": "factories", "to": "early", "label": "훅 제공", "kind": "request", "evidence": [ { "start_line": 266, "end_line": 299 } ], "assumption": false, "style": "dashed" } ], "legend": [], "metadata": {} }