Spring Boot jar 시작 시 환경 매개 변 수 를 설정 하 는 작업
요약
보통 Spring Boot 개발 프로젝트 를 사용 할 때 다 중 환경(테스트 환경 과 생산 환경 등)을 설정 해 야 하지만 프로젝트 포장 은 한 가지 환경 만 지정 할 수 있 습 니 다.방법 이 있 습 니까?jar 가방 만 칠 수 있 지만 시작 할 때 프로젝트 환경 을 지정 할 수 있 습 니까?저 자 는 인터넷 에서 자 료 를 조회 하고 테스트 한 결과 이 기능 이 실 현 될 수 있다 는 것 을 발견 하여 프로젝트 의 배치 작업(다 환경 자동 배 치 를 실현 할 수 있다)을 크게 편리 하 게 했다.
2 핵심 코드
2.1 spring 부팅 다 중 환경 설정
../demo-web/src/main/resources/application.yml
## spring config
spring:
# environment: dev|test|pro
profiles:
active: dev
2.2 spring 부팅 프로젝트 시작 명령Linux 명령 행 배경 에서 spring boot jar 시작:
nohup java -jar xxx.jar --spring.profiles.active=test > /dev/null 2>&1 &
배치 환경 에 따라 spring.profiles.active 값 을 수정 하면 됩 니 다.3 Spring boot 간단 한 시작 과 셸 스 크 립 트 정지
3.1 시작 스 크 립 트
../doc/script/start-springboot.sh
#!/bin/sh
#
# jar
#
projectDir=/opt/springboot/
# jar
jarName="springbootdemo.jar"
#
logDir=/var/log/springbootdemo/
#
profileActive=dev
# -x ${logDir}
if [ ! -x "${logDir}" ]; then
mkdir -p "${logDir}"
fi
# SpringBoot
count=$(ps -ef |grep ${jarName} |grep -v "grep" |wc -l)
if [ ${count} -lt 1 ]; then
cd ${projectDir}
nohup java -jar ${jarName} --spring.profiles.active=${profileActive} > /dev/null 2>&1 &
echo "$(date '+%Y-%m-%d %H:%M:%S') ${jarName} ... ..." >> ${logDir}$(date "+%Y-%m-%d").log
else
echo "$(date '+%Y-%m-%d %H:%M:%S') ${jarName} !!! !!!" >> ${logDir}$(date "+%Y-%m-%d").log
fi
3.2 스 크 립 트 정지
../doc/script/stop-springboot.sh
#!/bin/sh
#
# jar
#
projectDir="/opt/springboot/"
# jar
jarName="springbootdemo.jar"
#
scriptName="stop-springboot.sh"
# SpringBoot
count=$(ps -ef |grep ${jarName} |grep -v "grep" |wc -l)
if [ ${count} -gt 0 ]; then
echo " ${count} ${jarName} "
# id( grep 、awk )
jarPid=$(ps x | grep ${jarName} | grep -v grep | grep -v '${scriptName}' | awk '{print $1}')
#
kill -9 ${jarPid}
output=`echo " ${jarName} , id: ${jarPid}"`
echo ${output}
else
echo ' '
fi
# jar
rm -rf ${projectDir}${jarName}
#
cd ${projectDir}
3.3 스프링 부 트 프로젝트 모니터링생산 환경 에서 여러 가지 원인 으로 인해 프로젝트 의 운행 이 중단 되면 서버 는 대외 적 으로 서 비 스 를 제공 할 수 없다.서비스 가 무인 근무 시간 내 에 지속 적 으로 서 비 스 를 제공 할 수 있 도록 프로젝트 의 자동 복구/재 개 를 실현 하 는 것 이 특히 중요 하 다.여기 서 간단 하고 거 친 방식 으로 프로젝트 를 끊 고 바로 다시 시작 합 니 다.정시 작업 을 통 해 시작 스 크 립 트 를 실행 하면 됩 니 다.
정시 작업 crontab 를 간단하게 사용 합 니 다.centos 7 을 예 로 들 면:
시동 을 걸 고 정시 작업 서 비 스 를 시작 하 다.
systemctl enable cornd
정시 작업 시작
systemctl start cornd
정시 작업 서비스 닫 기
systemctl stop crond
정시 작업 추가,편집
crontab -e
내용 은 다음 과 같다.
00,10,20,30,40,50 * * * * /root/script/start-xxx.sh
현재 정시 작업 은 10 분 마다 동기 화 스 크 립 트 를 실행 하 는 것 을 의미 합 니 다.cron 표현 식 설명:
* * * * * command(s)
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
온라인 생 성 cron:http://cron.qqe2.com/주의사항:*/5****는 5 분 마다 실행 되 지만 일부 시스템 에 서 는 실행 되 지 않 을 수 있 음 을 나 타 냅 니 다.
4 Github 소스 코드
Gtihub 소스 주소:https://github.com/Flying9001/springBootDemo
springboot 프로젝트 시작 매개 변수 상세 설명
본 고 는 springboot 프로젝트 가 시 작 될 때 시작 파 라 메 터 를 추가 하 는 여러 가지 방식 을 소개 합 니 다.Spring 이 속성 을 주입 할 때@Value 주 해 를 통 해 속성 을 주입 할 수 있다 는 것 을 알 고 있 습 니 다.그러면@Value 가 읽 을 수 있 는 범 위 는 어떤 것 이 있 습 니까?이것 이 바로 본문의 주요 내용 이다.
다음 몇 가지 방법 은@Value 에서 읽 을 수 있 습 니 다.
1、java -jar -Dserver.port=8888 -Xms1024m demo.jar
이러한 방식 으로 추 가 된 매개 변 수 는 응용 시스템 속성 에 설정 되 어 있 으 며,System.getProperty("server.port")를 사용 하여 가 져 올 수 있 습 니 다(아이디어 의 아이디어 VM options 에서 설정 하여 빈 칸 으로 구분 할 수 있 습 니 다).
-D(defention)는 사용자 정의 매개 변 수 를 표시 합 니 다.
2、java -jar demo.jar --server.port=8888
이러한 방식 으로 추 가 된 매개 변 수 는 명령 행 매개 변수 입 니 다.즉,springboot 이 시 작 될 때의 main 방법의 String[]args 에서 매개 변수 로 전 송 됩 니 다.(아이디어 의 program arguments 에서 설정 하여 빈 칸 으로 구분 할 수 있 습 니 다)
3.운영 체제 의 환경 변수 에서 읽 기
이러한 방식 의 매개 변 수 는 운영 체제 에 속 합 니 다.예 를 들 어 jdk 를 설치 할 때 설정 한 환경 변 수 는 JAVA 를 정의 합 니 다.HOME,System.getenv("JAVAHOME")가 져 오기(idea 의 VM Environment variables 에서 설정 할 수 있 습 니 다.갈 림
4.프로젝트 설정 파일 boottstrap/application 파일 로 불 러 오기
이런 방식 은 프로젝트 에서 설정 하 는 방식 으로 비교적 흔히 볼 수 있다
이상 은 흔히 볼 수 있 는 다양한 방식 으로 소개 되 었 습 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.