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
													
											
												
												- moveToState
 - andorid
 - kotlin
 - compileKotlin FAILED
 - java.lang.OutOfMemoryError: Java heap space
 - 대학톡
 - Koin
 - Android
 - 특가게시판
 - Quickly
 - 카드 내역 공유 앱
 - 안드로이드 클린 아키텍쳐
 - 뷰 상태복구
 - 올인원타이머
 - 작성
 - 타이머앱
 - 카드내역 공유
 - RX
 - todofication
 - RxJava
 - recyclerview
 - fragment
 - nvidia-docker
 - 특가촌
 - 특가알람
 - android clean architecture
 - List
 - 안드로이드
 - onViewCreated
 - 뷰 상태 저장
 
													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