스프링 부트를 통한 개발 시 대부분 설정(ex)db접근정보)은 application.properties을 이용한다.
아래와 같이 application.properties파일을 작성했다고 하면,
1 2 3 | goslim.name = goslim goslim.age = 20 goslim.country = korea | cs |
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 |
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 |
1 | spring.profiles.active=dev |
혹은 프로젝트를 빌드할때 --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 |