SPRING

[Spring] propertis파일 데이터 불러오기

steadyMan 2021. 10. 2. 20:07

*.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을 통해 

인스턴스를 생성하거나 경로를 명시해줘야 인식이 가능합니다.