7.1 기능별 핵심 기술

기능핵심 기술관련 파일
TraceID 관리Servlet Filter + MDCTraceIdFilter.java
멀티스레드 지원ThreadLocal 복사MDCContext.java
의존성 수집Reflection (생성자 분석)DependencyCollector.java
계층 감지Annotation 검사 + 인터페이스 분석LayerDetector.java
DB 감지Environment 속성 읽기 + URL 파싱DatabaseDetector.java
자동 로깅Spring AOP (Aspect)MethodLoggingAspect.java
자동 설정Spring Boot Auto ConfigurationLoggerAutoConfiguration.java

7.2 디자인 패턴

7.2.1 필터 패턴 (Filter Pattern)

TraceIdFilter가 모든 요청을 가로채서 전처리/후처리.

7.2.2 관점 지향 프로그래밍 (AOP)

MethodLoggingAspect가 메서드 실행을 가로채서 로깅.

7.2.3 전략 패턴 (Strategy Pattern)

LayerDetector가 여러 전략으로 계층 감지 (어노테이션 → 인터페이스).

7.2.4 템플릿 메서드 패턴 (Template Method)

logMethodExecution()이 공통 로직을 정의하고, 각 Pointcut이 호출.

7.2.5 팩토리 패턴 (Factory Pattern)

LoggerAutoConfiguration이 Bean을 생성.


7.3 Spring 핵심 개념

7.3.1 ApplicationContext

모든 Bean을 관리하는 Spring의 IoC 컨테이너.

applicationContext.getBeansWithAnnotation(Service.class);
applicationContext.getBean(UserRepository.class);

7.3.2 Environment

애플리케이션 설정 정보에 접근.

environment.getProperty("spring.datasource.url");

7.3.3 BeanPostProcessor

Bean 생성 후 후처리 (AOP도 내부적으로 사용).

7.3.4 ApplicationEvent

이벤트 기반 프로그래밍.

@EventListener(ApplicationReadyEvent.class)
public void collectDependencies() { }

7.4 SLF4J MDC

MDC(Mapped Diagnostic Context)는 ThreadLocal 기반 로그 컨텍스트.

MDC.put("traceId", "abc");
log.info("Hello"); // [traceId=abc] Hello
MDC.remove("traceId");

7.5 Jackson ObjectMapper

Java 객체를 JSON으로 변환.

String json = objectMapper.writeValueAsString(logEntry);