YAML 파일 변수에 매핑하기. (@Value, @ConfigurationProperties)
@Value
application.yml
property:
test:
name: property depth test
propertyTest: test
propertyTestList: a,b,c
ValueTest.class
@SpringBootTest
public class AutoConfigurationApplicationTests {
@Value("${property.test.name}")
private String propertyTestName;
@Value("${propertyTest}")
private String propertyTest;
@Value("${noKey:default value}")
private String defaultValue;
@Value("${propertyTestList}")
private String[] propertyTestArray;
@Value("#{'${propertyTestList}'.split(',')}")
private List<String> propertyTestList;
@Test
void testValue() {
assertEquals("property depth test", propertyTestName);
assertEquals("test", propertyTest);
assertEquals("default value", defaultValue);
assertArrayEquals(new String[]{"a","b","c"}, propertyTestArray);
assertEquals(List.of("a","b","c"), propertyTestList);
}
}
@ConfigurationProperties
application.yml
car:
list:
- name: Porsche911
color: red
- name: K5
color: black
Car.class
public class Car {
private String name;
private String color;
@Override
public String toString() {
return "Car{" +
"name='" + name + '\'' +
", color='" + color + '\'' +
'}';
}
public void setName(String name) {
this.name = name;
}
public void setColor(String color) {
this.color = color;
}
}
CarProperty.class
@Component
@ConfigurationProperties("car")
public class CarProperty {
private List<Car> list;
public List<Car> getList() {
return list;
}
public void setList(List<Car> list) {
this.list = list;
}
}
Car.class
,CarProperty.class
에Setter
메서드 또는Constructor
가 필요하다.- 바인딩할 변수의 이름과
yaml
파일에 있는 이름이 매치해야한다. (케밥표기법, 소문자 가능) @Value
와는 다르게SpEl
은 사용이 불가하다.@Component
로 스프링이 관리하게 해야한다
'JAVA > SPRING' 카테고리의 다른 글
[SPRING] 스프링부트로 도커 이미지 만들기. (4) | 2020.06.02 |
---|---|
HTTP2로 요청을 보내보자 (0) | 2020.01.29 |
ResourceLoader (2) | 2020.01.22 |
[Spring]비즈니스 인터페이스에서 의존성을 정의하지 말라. (0) | 2019.10.26 |
@PathVariable (0) | 2019.10.20 |