AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

@PropertySource 어노테이션 사용법

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

  • 대상자: Spring 프레임워크를 사용하는 개발자
  • 난이도: 중급~고급 (Spring 애노테이션 및 외부 설정 관리 이해 필요)

핵심 요약

  • @PropertySource@Configuration과 함께 사용되어 외부 속성 파일을 로드하는 기능 제공
  • @Value("${property.name}")과 같은 Spring Expression Language 활용 가능
  • 다중 파일 로드 지원: Java 8+에서 @PropertySource를 반복적으로 적용 가능
  • 속성 덮어쓰기 기능: 동일한 이름의 속성 중 마지막 정의가 우선 적용
  • 미스 파일 처리: ignoreResourceNotFound = true로 존재하지 않는 파일 무시 가능

섹션별 세부 요약

1. 기본 사용법

  • @PropertySource("classpath:application.properties")로 외부 속성 파일 로드
  • @Value("${property.name}")을 통해 속성 값 주입
  • @PostConstruct로 로드된 값 확인 (예: logger.info("Property loaded: property.name={}", propertyName))

2. 다중 파일 로드

  • @PropertySource를 여러 번 적용하여 여러 파일 로드
  • 예: @PropertySource("classpath:application.properties"), @PropertySource("classpath:another.properties")
  • @PropertySources를 사용해 여러 파일을 그룹화 가능

3. 동적 경로 설정

  • Spring Expression Language 사용: @PropertySource("classpath:${config.location}/external.properties")
  • application.properties에서 config.location=external로 외부 파일 경로 지정
  • external.propertiesexternal.property.name=external value로 값 저장

4. 미스 파일 처리

  • ignoreResourceNotFound = true로 파일이 존재하지 않을 경우 기본값 사용
  • 예: @Value("${optional.property:default}") → 파일 없을 시 default 값 적용

결론

  • 실무 팁: 외부 설정 파일을 사용하여 코드에서의 보안성과 유연성 향상
  • 예: @PropertySource("classpath:${config.location}/external.properties")로 프로덕션 서버에서의 설정 분리
  • 필수 설정: ignoreResourceNotFound = true로 파일 누락 시 기본값 처리 방식 명시
  • 구현 예시: @PropertySources로 여러 파일 그룹화하여 관리 효율성 향상