--- kind: CONCEPT slug: messaging-spring-boot-starter-c03 title: 종료 순서가 두 수명 주기의 phase 로 표현된다 topic: delivery-and-settlement-models project: clean-architecture-backend-template status: 게시 전 sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 rootTreeNode: concept:messaging-spring-boot-starter-c03 evidenceCapturedOn: 2026-09-01 assets: - key: messaging-spring-boot-starter-c03 file: ../../../final/evidence/rendered/messaging-spring-boot-starter-c03.svg - key: messaging-spring-boot-starter-c03-diagram file: ../../../final/assets/diagrams/messaging-spring-boot-starter-c03.svg evidence: - ../../../final/evidence/raw/messaging-spring-boot-starter-c03.txt source: - 원본 분석 절은 final/document.md#a19-messaging-spring-boot-starter#L155 이다. module: messaging-spring-boot-starter --- # 종료 순서가 두 수명 주기의 phase 로 표현된다 SmartLifecycle 은 내림차순으로 멈추므로 중계가 먼저, 승인 차단과 배수가 다음이다. 두 클래스의 javadoc 이 서로를 근거로 든다 — 중계가 발행 중일 때 승인을 닫으면 그 회차의 행이 모호해지고, 그 모호함이야말로 배수가 없애려는 것이다. ## 관계 - **검증기는 발행이 아니라 주입이 강제다** 같은 분석 리프에서 끌어낸 규칙이다. ## 본문 `SmartLifecycle` 은 내림차순으로 멈추므로 중계가 먼저, 승인 차단과 배수가 다음이다. ## 두 수명 주기로 나뉜 종료 :::evidence key="messaging-spring-boot-starter-c03-diagram" alt="중계 정지에서 승인 차단과 배수로 내림차순 phase 가 건너가고 승인 차단과 배수에서 빈 소멸로 두 수명 주기 종료가 건너간다" caption="두 수명 주기로 나뉜 종료" zoom="false" ::: 두 클래스의 javadoc 이 서로를 근거로 든다 — 중계가 발행 중일 때 승인을 닫으면 그 회차의 행이 모호해지고, 그 모호함이야말로 배수가 없애려는 것이다. ## SmartLifecycle 참조 위치 :::evidence key="messaging-spring-boot-starter-c03" alt="코드베이스에서 SmartLifecycle 를 검색한 출력 14줄. 이 기록이 세는 참조가 그 출력에 그대로 보인다." caption="SmartLifecycle 코드베이스 검색 — 14줄 · exit 0" zoom="true" ::: ## 브로커 연결을 쥔 빈이 마지막이다 `@Bean(destroyMethod = "close")` 인 생산자는 `Lifecycle` 이 아니므로 컨텍스트가 `destroyBeans()` 에 도달할 때, 즉 두 수명 주기가 모두 끝난 뒤에 닫힌다. 순서가 맞는다.