spring-boot application.yml column mapping 사용 예제

spring-boot 에서 properties 파일을 사용하지 않고 yml 이라는 파일을 사용해 설정값등을 명시해주는데 이에대한 간략한 사용방법이다.

일단 resource 하위에 application.yml 파일을 만들고 아래와 같이 내용을 채워넣는다.

1
2
3
4
5
6
7
8
9
10
11
12
13
spring:
profiles: dev
datasource:
url: jdbc:postgresql://1.1.1.1:5432/abc
username: test
password: test123

settings:
user:
id: osujin12
pw: aaaa
server:
ip: 127.0.0.1

그리고 위 내용을 매핑시킬 context class 를 하나 선언하고 Annotation을 선언해주면 자동으로 매핑이 되는데 몇가지 방법이 존재한다.

  1. @Value 를 이용하여 1:1 로 mapping 하는방법

    • @Configuration , @EnableConfigurationProperties

위두개의 Annotation을 선언해주면 자동으로 yml 파일을(application.yml 파일은 따로 설정없이 자동으로 인식한다. 이름이 여러개의 yml 파일도 적용할수 있는데 이런경우 추가 설정이 필요하다.) load 한다. 그리고 선언된 변수에 yml 컬럼 명을 명시해주면 값이 셋팅된다.

1
2
@Value("${settings.server.ip}")
String ip;
  1. 객체에 yml을 mapping 하는 방법

    • @ConfigurationProperties(prefix = “settings”)

1번의 Annotation과 함께 위에 선언된 ConfigurationProperties Annotation을 사용하면 settings 하위에 있는 user,server 항목을 객체로 변환하여 자동으로 maaping 할수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 public class User {
String id;
String pw;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getPw() {
return pw;
}

public void setPw(String pw) {
this.pw = pw;
}
}

위와 같이 User 클래스를 선언한뒤 Context에 User 를 선언만 해주면 된다.

1
2
3
4
5
6
7
8
9
10
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "settings")
public class Context {
@Value("${settings.server.ip}")
String ip;

User user;
//getter , setter 생략
}

Context class 결과

공유하기