Spring Boot jar 시작 시 환경 매개 변 수 를 설정 하 는 작업

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 파일 로 불 러 오기
이런 방식 은 프로젝트 에서 설정 하 는 방식 으로 비교적 흔히 볼 수 있다
이상 은 흔히 볼 수 있 는 다양한 방식 으로 소개 되 었 습 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기