일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 추상클래스
- while
- 가변인자
- 형변환
- 자바 야구게임
- 업캐스팅
- Random
- Full text
- 다형성
- 페이징
- 야구게임
- Login with OAuth Authentication
- angular2
- 전체텍스트
- full text indexing
- 상속예제
- IBatis procedure
- 상속
- jquery
- Validations
- 스프링
- 전체
- 전자정부
- 다운캐스팅
- 단축키
- 자바
- 이클립스
- 로또
- 25가지 효율적인 sql작성법
- Today
- Total
nalaolla
SpringBoot2로 Rest api 만들기(11) – profile을 이용한 환경별 설정 분리 본문
SpringBoot2로 Rest api 만들기(11) – profile을 이용한 환경별 설정 분리
날아올라↗↗ 2020. 2. 14. 15:35이번장에서는 기존에 단일 파일로 관리되던 스프링 설정을 서버 환경에 따라 다르게 적용되도록 개선해보겠습니다.
환경별 application.yml의 분리
/resources 아래에 application.yml을 복사하여 application-alpha.yml, application-local.yml 두개를 더 만듭니다. 개발 환경에 따라 beta, service등이 더 있을수 있지만, 실습에서는 2개의 환경만 만들도록 하겠습니다.
스프링에서는 이렇게 파일을 분리하고 서버 실행 옵션에 profile을 설정하면 지정된 환경으로 서버를 시작할 수 있습니다.
기존의 application.yml에는 모든 환경에 공통으로 들어가는 설정을 넣습니다. 유심히 볼점은 spring.profiles.active: local 인데 스프링 서버 실행시 profile을 지정하지 않으면 application-local.yml을 기본 설정으로 서버가 실행됩니다.
# application.yml spring: profiles: active: local # 디폴트 환경 messages: basename: i18n/exception encoding: UTF-8 social: kakao: client_id: XXXXXXXXXXXXXXXXXXXXXXXXXX # 앱생성시 받은 REST API 키 redirect: /social/login/kakao url: login: https://kauth.kakao.com/oauth/authorize token: https://kauth.kakao.com/oauth/token profile: https://kapi.kakao.com/v2/user/me jwt: secret: govlepel@$& |
아래는 로컬 환경의 설정 파일입니다.
logging을 추가하여 com.rest.api package 하위의 로그는 debug level 이상일때 출력되도록 합니다. 나머지에 위치한 로그들은 warn level 이상이어야 출력됩니다. spring.profiles:local은 해당 yml이 local 환경임을 표시합니다. 다른 설정은 기존과 동일합니다.
# application-local.yml logging: level: root: warn com.rest.api: debug
spring: profiles: local datasource: url: jdbc:h2:tcp://localhost/~/test driver-class-name: org.h2.Driver username: sa jpa: database-platform: org.hibernate.dialect.H2Dialect properties.hibernate: hbm2ddl.auto: update format_sql: true showSql: true generate-ddl: true url: base: http://localhost:8080 |
아래는 알파 환경의 설정 파일입니다.
logging을 추가하여 com.rest.api package 하위의 로그는 info level 이상일때 출력되도록 합니다. 나머지 로그들은 warn level 이상이어야 출력됩니다.
또한 path를 지정하여 로그 파일(spring.log)이 /home/ec2-user/api/log 아래에 생성되도록 합니다. max-history를 지정하면 최근 로그 파일만 남고 과거 로그는 자동으로 지워집니다.
spring.profiles:alpha는 해당 yml이 alpha 환경임을 표시합니다. local 환경과는 달리 alpha에서는 mysql db를 사용하도록 세팅 한 것을 볼 수 있습니다. 또한 DDL을 허용하지 않도록 설정하여, 임의로 테이블이 생성되거나 변경되지 않도록 합니다.
logging: level: root: warn com.rest.api: info path: /home/ec2-user/api/log file: max-history: 7
spring: profiles: alpha datasource: url: jdbc:mysql://127.0.0.1:33060/daddyprogrammer?useUnicode=true&autoReconnect=true&characterEncoding=utf8&allowMultiQueries=true&useSSL=false driver-class-name: com.mysql.cj.jdbc.Driver username: happydaddy password: daddy!@#1004 jpa: database-platform: org.hibernate.dialect.MySQL5InnoDBDialect properties.hibernate: hbm2ddl.auto: none format_sql: true showSql: true generate-ddl: false url: base: http://alpha.daddyprogrammer.org |
Intellij에서 서버 실행시 환경 적용
다음과 같이 Edit Configuraion을 눌러 서버 설정 화면으로 들어갑니다.
하단의 Active profiles라는 항목에 local이나 alpha를 적고 서버를 실행하면 해당 profile에 해당하는 환경설정 yml이 적용됩니다.
Configurations 화면이 아래와 같을경우엔 VM options 항목에 -Dspring.profiles.active={환경}으로 profile을 지정하면 됩니다.
서버 실행시 환경 적용
실제 서버에서는 tomcat의 JVM 옵션 설정하는 부분이나 executable jar 실행시 옵션에 profile을 설정하면 됩니다. jar로 바로 실행하는 경우는 다음과 같이 -Dspring.profiles.active로 환경을 지정 하면 됩니다.
$ java -jar -Dspring.profiles.active=alpha api-0.0.1-SNAPSHOT.jar |
최신 소스는 GitHub 사이트를 참고해 주세요.
https://github.com/codej99/SpringRestApi/tree/feature/seperate-profile
GitHub로 프로젝트 구성은 다음을 참고해주세요.
https://daddyprogrammer.org/post/1215/intellij-github-spring-gradle-project-import
[출처] https://daddyprogrammer.org/post/2421/springboot2-seperate-environment-by-profile/
'SPRING > SpringBoot Restfull api' 카테고리의 다른 글
SpringBoot2로 Rest api 만들기(13) – Jenkins 배포(Deploy) + Git Tag Rollback (0) | 2020.02.14 |
---|---|
SpringBoot2로 Rest api 만들기(12) – Deploy & Nginx 연동 & 무중단 배포 하기 (0) | 2020.02.14 |
SpringBoot2로 Rest api 만들기(10) – Social Login kakao (0) | 2020.02.14 |
SpringBoot2로 Rest api 만들기(9) – Spring Starter Unit Test (0) | 2020.02.14 |
SpringBoot2로 Rest api 만들기(8) – SpringSecurity 를 이용한 인증 및 권한부여 (1) | 2020.02.14 |