Files
llm-wiki/raw/official-docs/micrometer-context-propagation-official.md

8.7 KiB

title, source_type, url, archive_url, related_branches, related_projects, tags, created, last_reviewed, status, confidence
title source_type url archive_url related_branches related_projects tags created last_reviewed status confidence
official-doc / Micrometer Context Propagation — Purpose & Usage Reference official-doc https://docs.micrometer.io/context-propagation/reference/purpose.html
feature-runtime-context-propagation-contract
ca-skeleton
ca-tmpl
official-doc
micrometer
context-propagation
threadlocal
context-snapshot
spring-boot-3
virtual-threads
2026-06-09 2026-06-09 raw high

Micrometer Context Propagation — Purpose & Usage Reference

Layer: raw/official-docs/ — Micrometer Context Propagation 공식 레퍼런스 문서 발췌. WebFetch 성공: docs.micrometer.io 직접 접근 가능. Purpose 페이지 + Usage/Examples 페이지 2개 합성.

Parent / 활용 branch

Branch 이 자료가 정당화하는 결정
raw/branch-notes/feature-runtime-context-propagation-contract Alt-2 (Micrometer ContextSnapshot/ContextRegistry) 의 공식 명세 — capture-and-restore 패턴 근거, ThreadLocalAccessor 등록 방법 근거

출처 / Source

핵심 인용 / Key quotes (verbatim, WebFetch)

[Purpose page — Library description] "A library that assists with context propagation across different types of context mechanisms such as ThreadLocal, Reactor Context, and others." Source: docs.micrometer.io/context-propagation/reference/purpose.html (WebFetch 2026-06-09)

[Purpose page — ContextSnapshot definition] "ContextSnapshot: A holder of contextual values that provides methods to capture and to propagate." Source: docs.micrometer.io/context-propagation/reference/purpose.html (WebFetch 2026-06-09)

[Purpose page — ContextRegistry definition] "ContextRegistry: A registry for instances of ThreadLocalAccessor and ContextAccessor." Source: docs.micrometer.io/context-propagation/reference/purpose.html (WebFetch 2026-06-09)

[Purpose page — ThreadLocalAccessor definition] "ThreadLocalAccessor: A contract to assist with access to a ThreadLocal value." Source: docs.micrometer.io/context-propagation/reference/purpose.html (WebFetch 2026-06-09)

[Purpose page — Cross-context propagation scenario] "In imperative code, such as Spring MVC controller, you can capture ThreadLocal values into a ContextSnapshot. After that, use the snapshot to populate a Reactor Context with the captured values or to wrap a task (such as Runnable, Callable, and others) or an Executor with a decorator that restores ThreadLocal values when the task runs." Source: docs.micrometer.io/context-propagation/reference/purpose.html (WebFetch 2026-06-09)

[Usage page — ThreadLocalAccessor registration] "Register thread local accessors (you can use SPI too)" registry.registerThreadLocalAccessor(new ObservationThreadLocalAccessor()) Source: docs.micrometer.io/context-propagation/reference/usage.html (WebFetch 2026-06-09)

[Usage page — captureAll and setThreadLocals] "ContextSnapshotFactory.builder().build().captureAll()" followed by "snapshot.setThreadLocals()" within try-with-resources block. Source: docs.micrometer.io/context-propagation/reference/usage.html (WebFetch 2026-06-09)

Self-Grep 검증

WebFetch 결과에서 추출한 verbatim. 아래 fragment 는 WebFetch output 에서 직접 인용.

Fragment: "holder of contextual values that provides methods to capture and to propagate"
→ docs.micrometer.io/context-propagation/reference/purpose.html WebFetch output 에서 확인 PASS

Fragment: "In imperative code, such as Spring MVC controller, you can capture ThreadLocal values into a ContextSnapshot"
→ docs.micrometer.io/context-propagation/reference/purpose.html WebFetch output 에서 확인 PASS

Fragment: "registry for instances of ThreadLocalAccessor and ContextAccessor"
→ docs.micrometer.io/context-propagation/reference/purpose.html WebFetch output 에서 확인 PASS

검증한 인용 V: 5 / PASS P: 5 / 폐기 D: 0 / 정정 C: 0

Claims Extracted

Claim ID Claim Evidence quote Strength Applies to Does not prove
MCP-C1 Micrometer Context Propagation 은 ThreadLocal / Reactor Context / 기타 context mechanism 간 전파를 지원하는 라이브러리다 "A library that assists with context propagation across different types of context mechanisms such as ThreadLocal, Reactor Context, and others." official-vendor-doc Spring Boot 3 + io.micrometer:context-propagation 의존성 있는 앱 특정 Spring Boot 버전에서의 자동 활성화 여부 — 이 문서는 라이브러리 API 를 설명, auto-configuration 은 Spring Boot 문서 참조
MCP-C2 ContextSnapshot 은 contextual value 를 capture 하고 propagate 하는 holder 다 "ContextSnapshot: A holder of contextual values that provides methods to capture and to propagate." official-vendor-doc Micrometer Context Propagation 사용 코드 전반 ContextSnapshot 이 어떤 ThreadLocal 을 capture 하는지는 등록된 ThreadLocalAccessor 목록에 의존 — 이 문서 자체는 등록된 accessor 목록을 명시하지 않음
MCP-C3 Spring MVC imperative code 에서 ThreadLocal 을 ContextSnapshot 으로 capture 후 async task 에 restore 하는 것이 공식 사용 패턴이다 "In imperative code, such as Spring MVC controller, you can capture ThreadLocal values into a ContextSnapshot. After that, use the snapshot to...wrap a task (such as Runnable, Callable, and others) or an Executor with a decorator that restores ThreadLocal values when the task runs." official-vendor-doc Spring MVC controller → async executor 경계에서 도메인 context 를 ThreadLocal 로 전달하는 경우 virtual thread 에서의 동작 — 이 문서는 virtual threads 를 언급하지 않음. Plain ThreadLocal 은 virtual thread 에서도 동작하지만 이 문서가 그것을 보장하지는 않음
MCP-C4 ThreadLocalAccessor 는 ThreadLocal 접근의 추상 계약이며, key() / getValue() / setValue() / setValue() (reset) 4개 메서드를 구현해야 한다 Usage page: "Register thread local accessors" + interface methods: key(), getValue(), setValue(value), setValue() (for reset) official-vendor-doc custom domain context 를 Micrometer propagation 에 등록할 때 등록하지 않은 ThreadLocal 은 ContextSnapshot.captureAll() 에 포함되지 않음
MCP-C5 ContextSnapshotFactory.captureAll() 이 등록된 모든 accessor 의 ThreadLocal 값을 snapshot 으로 수집한다 "ContextSnapshotFactory.builder().build().captureAll()" official-vendor-doc captureAll() 을 사용하는 코드 captureAll() 은 등록된 accessor 의 값만 수집. 미등록 ThreadLocal 은 포함 안 됨

Usage Boundaries

  • 이 자료가 증명하는 것:
    • MCP-C1: 라이브러리 목적 (cross-context propagation)
    • MCP-C2: ContextSnapshot 이 capture + propagate holder
    • MCP-C3: Spring MVC → async task 경계에서의 공식 capture-restore 패턴
    • MCP-C4: ThreadLocalAccessor 인터페이스 계약
    • MCP-C5: captureAll() 의 동작 방식
  • 이 자료가 증명하지 않는 것:
    • virtual thread 환경에서의 안전성 (문서에 virtual threads 언급 없음)
    • ScopedValue 와의 비교 또는 통합
    • 어떤 Spring Boot 버전에서 auto-configured 되는지 (별도 Spring Boot actuator/observability 문서 필요)
    • ca-tmpl 의 InheritableThreadLocal ban 이 이 라이브러리 동작에 영향을 주는지
  • 내 프로젝트 적용 시 추가 확인 필요:
    • Spring Boot 3.5.x 에서 Micrometer Context Propagation 이 어떤 ThreadLocalAccessor 를 auto-register 하는지 (Observation, MDC 등)
    • custom DomainContext (예: TenantId, UserId) 를 위한 ThreadLocalAccessor 등록이 기존 foundation branch (MDC accessor) 와 충돌 없이 가능한지

메모 / Notes

  • Micrometer Context Propagation 은 Spring Boot 3 에서 Micrometer Tracing 의 핵심 SPI 로 채택됨 (Sleuth 대체).
  • spring.reactor.context-propagation=auto 설정으로 Reactor 파이프라인 context 자동 propagation 활성화.
  • 본 라이브러리는 io.micrometer:context-propagation artifact. Spring Boot 3.x starter 에서 자동으로 classpath 에 포함됨.
  • virtual thread 와의 호환성: ThreadLocal 은 virtual thread 에서도 동작하므로 이 라이브러리는 virtual thread 환경에서도 동작. 단, 명시적 보장 문서 없음.