Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 올인원타이머
- 대학톡
- todofication
- 타이머앱
- fragment
- 특가알람
- 작성
- 뷰 상태복구
- moveToState
- onViewCreated
- 안드로이드 클린 아키텍쳐
- 뷰 상태 저장
- 카드 내역 공유 앱
- Quickly
- 안드로이드
- List
- kotlin
- 특가게시판
- 카드내역 공유
- 특가촌
- java.lang.OutOfMemoryError: Java heap space
- RxJava
- RX
- andorid
- nvidia-docker
- compileKotlin FAILED
- android clean architecture
- recyclerview
- Koin
- Android
Archives
- Today
- Total
seoft
Spring Gradle bootRun시 main으로 인자 전달 및 config 파일에 반영 본문
[문제정의]
서버 개발 도중 다음 요구사항이 생김
[ 서버가 사용 할 port, 서버에서 사용하는 password ] 를 서버를 실행할 때 인자로 전달하여 config에 반영하고자 함
[문제해결]
다음 두가지 과정을 거쳐 해결
main문의 (String []args)로 인자 전달하고 받은 인자를 application.yml에 반영하여 해결
1. main문의 (String []args)로 인자 전달
추가적인 그래들 설정 없이, 실행 시 다음의 명령어로 실행 (gradlew대신 gradle도 가능 )
gradlew bootRun --args='port=4000,password=pwd'
Intellij 내의 Run에서 사용시
결과로 java의 메인문인 public static void main(String[] args) 에 전달됨
args.length 의 값: 1
args[0] 의 값(String): "port=4000,password=pwd"
int port = 3000;
String password = "default";
port = parsePort(args[0]);
password = parsePassword(args[0]);
...
2. 받은 인자를 application.yml에 반영
만든 SpringApplication 객체에 properties값을 넣으면서 application 파일에 추가 설정 진행
*단 기존 application.yml에 해당 key, value값이 없어야함 (여기서는 server.port, server.password)
SpringApplication application = new SpringApplication(SeoftIotServerApplication.class);
Properties properties = new Properties();
properties.put("server.port", port);
properties.put("server.password", password);
application.setDefaultProperties(properties);
application.run(args);
[관련코드]
'server' 카테고리의 다른 글
kotlin spring 실행시 Task :compileKotlin FAILED e: java.lang.OutOfMemoryError: Java heap space 에러 (0) | 2022.05.05 |
---|---|
Spring initializr, Gradle, kotlin 후 초기 빌드에러 (0) | 2019.09.27 |
Comments