본문 바로가기

IT/개발지식

Springboot yaml 파일에 List 세팅하기

반응형

 

yaml property에 list 형식의 데이터를 세팅해줘야 되는 경우가 있다. 이런 경우 두 가지 방식이 있는데, 먼저 아래와 같이 "- "(dash and space) 문법을 활용하면 자바에서 Collection 필드에 주입할 수 있다.

 

my:
 servers:
 - dev.example.com
 - another.example.com

 

그러면 자바 코드에서는 아래와 같이 Collection 필드에 주입된다. dash 뒤에 공백을 한 칸 줘야하는 것을 꼭 잊지말자.@ConfigurationProperty 말고 @Value를 사용할 수도 있는데, @ConfigurationProperty는 bulk injection이 되므로 데이터가 계층 구조일때 편의성이 있다. 반면 단일 필드를 사용할때는 @value가 더 간편한 경우도 있다. 이 밖에 여러 자잘한 차이들이 있긴하나 중요한 내용은 아닌 것 같으므로 궁금하면 자세히 설명해둔 참조글을 읽어보자.

 

@ConfigurationProperties("my")
public class Config {
    private Set<String> servers;
    
    //getter and setter
}

 

또는 String 배열로 바인딩 하는 방법도 있는데, yaml 파일에서 comma로 value를 구분해주면 된다. 

my:
 servers: dev.example.com, another.example.com

 

자바에서 String 배열 타입에 주입되게 된다.

 

@ConfigurationProperties("my")
public class Config {
    private String[] servers;
    
    //getter and setter
}

 

개인적으로 dash 구분이 깔끔하고 좋은 것 같다. String 배열을 꼭 써야겠다면 컬렉션으로 받아서 parsing하면 된다.

 

 

참조

 

https://www.baeldung.com/spring-boot-yaml-list

https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html

https://developpaper.com/differences-between-springboot-value-and-configuration-properties/

반응형