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