본문 바로가기

게으른개발자/공부

스프링부트 프로파일

스프링 부트를 통한 개발 시 대부분 설정(ex)db접근정보)은  application.properties을 이용한다.


아래와 같이 application.properties파일을 작성했다고 하면,

1
2
3
goslim.name = goslim
goslim.age = 20
goslim.country = korea
cs
 
아래와같이 @Value 어노테이션을 이용해 해당값을 활용하면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Component
public class MyClass {
 
    @Value("${goslim.name}")
    private String name;
  
    @Value("${goslim.age}")
    private int age;
  
    @Value("${goslim.country}")
    private String country;
 
    // ...
}
cs




그러나 application.properties의 값이 많아질 경우 일일이 하나하나 값을 입력해주기는 번거롭다.

그럴때는 @ConfigurationProperties 어노테이션을 활용하면 유용하다.

아래와 같이 @ConfigurationProperties에 해당 프리픽스값(ex:goslim)을 입력하면 프로퍼티파일을 기반으로 매칭되는 값이 설정된다. (단, setter함수가 선언되어 있어야한다.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@Component
@ConfigurationProperties("goslim")
public class MyClass {
 
    private String name;
  
    private int age;
  
    private String country;
 
    public void setName(String name){
        this.name = name;
    }
 
    public String getName(){
        return this.name;
    }
 
    public void setAge(int age){
        this.age = age;
    }
    public int getAge(){
        return this.age;
    } 
    
    public void setcountry(String country){
        this.country = country;
    }
    public String getCountry(){
        return this.country;
    }
}
cs




프로파일용 프로퍼티


개발을 하다 보면 상황에 따라 application.properties의 값 달라질 필요가 있다.

예를 들면, application.properties를 통해 DB 접근 정보를 설정해놓았는데, 개발서버와 배포 서버의 DB 정보가 다른 경우 개발할 때와 배포할 때 다른 값들을 읽어와야 한다. 이럴 경우 매번 application.properties 수정하는 것은 번거로운 작업이다. 

따라서 application.properties 여러 개 생성하고 상황에 맞는 application.properties의 값이 설정되게 하면 매번 수정하는 번거로운 작업을 하지 않아도 된다.


그 방법은 아래와 같다.


application-dev.properties

1
2
db.username = kim
db.password = 1234 
cs


application-live.properties
1
2
db.username = root
db.password = 4321
cs


위와같이 application-{이름}.properties 형식으로 여러 프로퍼티파일을 만들고

아래와같이 @EnableConfigurationProperties 어노테이션을 사용하면 된다.


1
2
3
4
5
6
7
8
9
10
11
@Component
@EnableConfigurationProperties
@ConfigurationProperties("db")
public class MyClass {
 
    private String username;
  
    private String password;
 
   //...
}
cs

실행할때 dev인지 live인지 어떻게 구별하지?
그방법으로는 아래와 같이  application.properties에 spring.profiles.active=이름 과 같이 입력 하면된다.

application.properties
1
spring.profiles.active=dev

cs


혹은 프로젝트를 빌드할때 --spring.profiles.active=이름 과 같이 아규먼트를 같이 넘기면 된다.

'게으른개발자 > 공부' 카테고리의 다른 글

리눅스 alias 설정  (0) 2019.02.27
javascript hoisting 이란  (0) 2019.01.20
자바 스트림(Stream)  (0) 2019.01.09
자바 람다(Lambda)  (0) 2019.01.08
네스티드 클래스  (0) 2019.01.07