반응형
스프링부트 개발하면서 IntelliJ에서 VM Options 설정하는 방법을 정리했다.
VM Options란?
JVM(Java Virtual Machine)에 전달되는 시스템 프로퍼티나 환경변수를 설정하는 방법이다.
쉽게 말해서 코드에 박기 곤란한 설정값들을 실행할 때 주입해주는 거다.
IntelliJ에서 VM Options 설정하는 방법
1. Run Configuration 열기
- 상단 메뉴바에서 Run > Edit Configurations 클릭
- 또는 실행 버튼 옆 드롭다운에서 Edit Configurations 선택
2. 실행옵션추가 -> VM Options 입력
- VM Options 필드에 -D 옵션으로 시작하는 프로퍼티들을 입력
- 각 옵션은 줄바꿈 또는 공백으로 구분
3. 설정 예시와 용도
AWS SES 설정 (이메일 발송용)
-Dses.username=*********************
-Dses.password=************************
회원가입 인증메일, 비밀번호 찾기 메일 보낼 때 사용. AWS SES 계정 정보를 코드에 박지 말고 VM 옵션으로 빼둠.
JWT 토큰 암호화 키
-Djwt.secret=*******************
로그인 JWT 토큰 생성/검증할 때 사용하는 시크릿 키. 이거 노출되면 토큰 위조 가능해서 절대 코드에 박으면 안됨.
데이터베이스 연결 정보
-Ddb.url=10.**.0.***:3308
-Ddb.name=dev
-Ddb.username=dev
-Ddb.password=******
개발용 DB 접속할 때 사용. application.yml에서 ${db.url}, ${db.name} 이런 식으로 참조함. 개발/운영 DB 분리할 때 편함.
암호화용 IV
-Dencryption_iv=**********
개인정보나 민감한 데이터 암호화할 때 사용하는 초기화 벡터. AES 암호화 같은 거 쓸 때 필요함.
주요 용도
- 민감한 정보 분리: DB 패스워드, API 키 같은 거 코드에서 빼기
- 환경별 설정: 개발용 DB와 운영용 DB 주소 다르게 설정
- 암호화 키 관리: JWT 시크릿, 암호화 키 등 보안 관련 설정
- 외부 서비스 인증: AWS, 구글 API 같은 외부 서비스 연동 정보
언제 사용하나?
- 회원가입/로그인 기능 만들 때 (JWT, 이메일 발송)
- 개인정보 암호화 저장할 때
- 외부 API 연동할 때
- 개발/스테이징/운영 환경 분리할 때
장점
- 코드에 민감한 정보 하드코딩 안해도 됨
- 환경별로 다른 설정값 쉽게 관리
- IDE에서 바로 실행하면서 테스트하기 편함
- Git에 올라가면 안되는 정보들 안전하게 관리
주의사항
- 민감한 정보는 절대 Git에 올리지 말기
- 실제 서비스할 때는 환경변수나 외부 설정 파일 쓰기
- VM Options는 IntelliJ에서 실행할 때만 적용됨 (jar 배포할 때는 별도 설정)
728x90
반응형
'💻 개발로그 (Tech Log) > Spring & Java & 웹개발 실무노트' 카테고리의 다른 글
| Java 개발자를 위한 장애 대응 가이드 메모 (6) | 2025.08.05 |
|---|---|
| Spring @Transactional 쉽게 정리하기 (1) | 2025.07.29 |
| Java 백엔드 장애 발생 시 빠른 원인 파악 방법 (0) | 2025.07.08 |
| Redis 캐싱 전략과 캐시 무효화 처리 (0) | 2025.06.30 |
| Spring Security JWT 토큰 인증 구현 시 보안 고려사항 (0) | 2025.06.26 |