AirportService

공항 정보를 조회하고 캐싱하는 서비스. Redis 캐싱으로 City API 호출을 최소화한다.

의존성

서비스용도
CityClient공항 정보 API 호출
RedisTemplate공항 정보 캐싱

캐시 설정

항목
캐시 키 프리픽스airport
TTL1일
키 형식airport::{iata}

메서드

getAirportsMap

fun getAirportsMap(codes: Set<String>): Map<String, Airport>

여러 공항 정보를 맵으로 조회한다.


getAirportByIata

fun getAirportByIata(iata: String): Airport

단일 공항 정보를 조회한다. 캐시 우선, 없으면 API 호출.

조회 순서:

  1. Redis 캐시 확인
  2. CityClient API 호출 → 캐시 저장
  3. API 결과 없으면 Airport.ofIata(iata)로 기본 객체 생성

Airport 객체

필드설명
iataCodeIATA 공항 코드
id내부 ID (null이면 미등록 공항)
country국가 정보
timezone시간대

특징

  • 1일 캐싱: 공항 정보는 거의 변경되지 않아 1일 TTL
  • 폴백 처리: API 결과 없어도 IATA 코드로 기본 객체 생성
  • 미등록 공항 감지: id == null로 미등록 공항 판별