[클라이언트 요청]
       │
       ├─────────────┐
       │             │
       ▼             ▼
[정적 파일 요청]   [API 요청 (/api/**)]
 /uploads/**         /api/posts, /api/admin/** 등
       │             │
       │             ▼
       │     +-------------------------+
       │     | SecurityFilterChain      |
       │     | - HttpSecurity 설정       |
       │     | - JWT 필터 등록          |
       │     +-------------------------+
       │             │
       │             ▼
       │     +-------------------------+
       │     | JwtAuthFilter            |
       │     | - JWT 존재/유효성 검증  |
       │     | - UserDetailsService 호출|
       │     | - SecurityContext 저장   |
       │     +-------------------------+
       │             │
       │             ▼
       │     +-------------------------+
       │     | 권한 검사 (HttpSecurity) |
       │     | - /api/admin/** → ROLE_ADMIN |
       │     | - /api/** → 인증 필요       |
       │     | - 기타 → permitAll()        |
       │     +-------------------------+
       │             │
       ▼             ▼
[WebConfig]       [Controller 실행]
 - addResourceHandlers      - 서비스 로직 수행
 - uploadDir 매핑           - DB 조회 / 처리
                           - Page<T> 결과 생성
                                   │
                                   ▼
                       +-------------------------+
                       | PageResponse.from(Page<T>) |
                       | - List<T> content         |
                       | - int page, size          |
                       | - long totalElements      |
                       | - int totalPages           |
                       | - boolean first, last      |
                       +-------------------------+
                                   │
                                   ▼
                          [프론트에게 JSON 응답]

흐름 요약

  1. 클라이언트 요청이 정적 파일(/uploads/)인지 API(/api/)인지 분기
  2. 정적 파일 요청WebConfig.addResourceHandlers에서 서버 로컬 파일 읽어 클라이언트 응답
  3. API 요청SecurityFilterChain 처리
  4. JWT 존재 시 JwtAuthFilter → UserDetailsService 호출 → SecurityContext 저장
  5. HttpSecurity 권한 검사 → 요청 경로별 ROLE / 인증 여부 확인
  6. 권한 통과 시 Controller 실행, 실패 시 401/403 반환

<aside> 💡

핵심 포인트