@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.properties
에external.property.name=external value
로 값 저장
4. 미스 파일 처리
ignoreResourceNotFound = true
로 파일이 존재하지 않을 경우 기본값 사용- 예:
@Value("${optional.property:default}")
→ 파일 없을 시default
값 적용
결론
- 실무 팁: 외부 설정 파일을 사용하여 코드에서의 보안성과 유연성 향상
- 예:
@PropertySource("classpath:${config.location}/external.properties")
로 프로덕션 서버에서의 설정 분리 - 필수 설정:
ignoreResourceNotFound = true
로 파일 누락 시 기본값 처리 방식 명시 - 구현 예시:
@PropertySources
로 여러 파일 그룹화하여 관리 효율성 향상