[Spring] propertis파일 데이터 불러오기
*.propertis 파일에 선언한 value데이터를 불러와야할때 사용할 수 있는
다양한 방법들에 대해 학습한 내용을 정리합니다.
구현 환경
- 프레임워크 : Spring Framework(2.5.4)
- 빌드도구 : Gradle
- IDE : STS
- 언어 : JAVA 11
1. @Value
@Value 어노테이션을 활용한 방법입니다.
ex) @Value("${key}")
private String key;
application.propertis파일에 선언된 key.value데이터를 불러와야할 경우
간단하게 불러올 수 있습니다.
하지만 application.properties 외의 파일에서 데이터를 가져와야 할 경우
해당 방법은 사용 할 수 없습니다.
2. 사용자 생성 properties
작업자가 생성한 propertis파일에서 데이터를 가져오는 방법입니다.
2-1. @PropertySource("경로")
임의의 ApiRequestInfo.properties파일에 test.key = testkey 라는 데이터를 생성하였습니다.
해당 데이터를 @Value 어노테이션을 사용하여 불러오려면
클래스 위에 @PropertySource("경로")를 선언 후 사용하면됩니다.
테스트 코드라서 @TestPropertySource를 사용했지만 자바코드에서는 @PropertySource를 사용하시면 됩니다.
propertis파일의 경로를 파라미터로 주면 사용이 가능합니다.
2-2. PropertiesFactoryBean
PropertiesFactoryBean의 인스턴스를 생성하여 사용하는 방식입니다.
Bean어노테이션에 사용 할 name을 입력하고 ClassPathResource에 propertis파일의 경로를 입력합니다.
이후 @Value("#{빈이름['key']}") 을 사용하여 데이터를 주입받아 사용하시면됩니다.
3. Environment 인터페이스 활용
Enviorment 인터페이스를 활용하면 application.propertis뿐 아니라 사용자 생성 propertis파일까지
포괄적으로 데이터를 불러올수있습니다.
@Autowired
private Environment environment;
@Test
@DisplayName("application.propertis파일에서 데이터 가져오기")
void valueCheck() {
Assertions.assertEquals("testkey", environment.getProperty("key.value"));
}
getProperty("key") 형식으로 데이터를 가져올 수 있는데
사용자 생성 properties파일의 경우 위에서 말씀드린 PropertiesFactoryBean 혹은 PropertySource을 통해
인스턴스를 생성하거나 경로를 명시해줘야 인식이 가능합니다.