2023-01-27,   이한솔

이번 포스팅에서는 Spring에서 yaml파일을 파싱하는 방법에 대해 알아보도록 하겠습니다.


@ConfigurationProperties는 Spring에서 YAML, properties 파일에 정의된 프로퍼티들을 POJO에 매핑하여 Bean으로 만들 수 있게 해주는 어노테이션입니다.


사용방법

다음과 같은 yaml 파일을

source-file:
    name: agent_log
    path: C:\apps\test\agent.log

prefix를 이용해 다음과 같이 POJO에 매핑하여 사용할 수 있습니다.

@ConfigurationProperties(prefix = "source-file")
public class Property {
    private String name;
    private String path;
}


유연한 바인딩

프로퍼티 값을 객체에 바인딩 할 경우 필드를 Camel식으로 선언하고 키는 다양한 형식으로 선언하여 바인딩이 가능합니다.

예를 들어 다음과 같이 다양한 표기 방법으로 표현된 ‘classname’은

component:
  className: com.epozen.acelletl.Filter
  classname: com.epozen.acelletl.Filter
  class_name: com.epozen.acelletl.Filter
  class-name: com.epozen.acelletl.Filter
  CLASS_NAME: com.epozen.acelletl.Filter

다음과 같이 카멜식인 ‘className’으로 모두 바인딩 가능합니다.

@ConfigurationProperties(prefix = component)
public class Property {
    private String className;
}


형태별 바인딩

일반적인 바인딩의 경우 앞서 보여드린 예시처럼 구현하면 되고,
List 형태의 경우는 다음과 같이 구현할 수 있습니다.

component:  
  - class: com.epozen.acelletl.Filter
    from: agent_log
    name: alert_filter
  - class: com.epozen.acelletl.Appender
    from: alert_filter
    name: alert_appender
@Getter
@Setter
@Component
@ConfigurationProperties
public class ComponentProperty {
	private List<Component> component;    
		
		@Getter    
		@Setter    
		public static class Component {        
			private String cLass;     
			private String from;      
			private String name;    
		}
	}

업데이트: