반응형
SMALL
SpringBoot에서 properties등에 기록된 지정된 상수 값들 Load하는 방법은 2가지가 있습니다.
- application.yml을 사용
- 원하는 파일명의 yml을 사용
이렇게 2가지 방법으로 사용될수 있습니다.
1번이 기본적인 방법이며 2번은 정말 properties파일로 사용하기위한 용도로 생각하면 될것 같습니다.
application.yml
test:
username: zemba
password: 1234
1번 방법
@Configuration
class PropertyConfig(
@Value("\$test.username") val username: String,
@Value("\$test.password") val password: String,
)
SpringBootApplication 구동시 자동적으로 application.yml을 Load하기 때문에 바로 test.username, test.password를 @Value로 가져와서 사용할수 있습니다.
2번 방법
별도의 파일명을 사용하여 properties의 값을 Load하기 위해서는 아래와 같이 설정해줘야합니다
@Configuration
@PropertySource(value = "classpath:other-properties.yml")
class PropertyConfig(
@Value("\$test.username") val username: String,
@Value("\$test.password") val password: String,
)
@PropertySource를 통하여 관련 yml 파일을 참조할수 있도록 지정해주어야 합니다.
하지만 이렇게 해도 yml을 read할수 없기때문에 별도의 Factory를 지정해 주어야 합니다.
public class YamlPropertySourceFactory implements PropertySourceFactory {
@Override
public PropertySource<?> createPropertySource(String name, EncodedResource encodedResource){
YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
factory.setResources(encodedResource.getResource());
Properties properties = factory.getObject();
return new PropertiesPropertySource(encodedResource.getResource().getFilename(), properties);
}
}
Java로 관련 Class를 생성하여 기존 Config에 ymlProperties를 읽을수 있도록 설정해줍니다.
@Configuration
@PropertySource(value = ["classpath:other-properties.yml"], factory = YamlPropertySourceFactory::class)
class PropertyConfig(
@Value("\$test.username") val username: String,
@Value("\$test.password") val password: String,
)
위와 같이 하면 파일명이 다른 yml파일의 내용을 사용 가능합니다.
반응형
LIST
'Dev > Spring Boot' 카테고리의 다른 글
[SpringBoot] spring.config.activate.on-profile (0) | 2021.11.23 |
---|
댓글