最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot jar 啟動(dòng)時(shí)設(shè)置環(huán)境參數(shù)的操作

 更新時(shí)間:2021年06月04日 11:37:07   作者:Flying9001  
這篇文章主要介紹了Spring Boot jar 啟動(dòng)時(shí)設(shè)置環(huán)境參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Spring Boot jar 啟動(dòng)時(shí)設(shè)置環(huán)境參數(shù)

1 摘要

通常在使用 Spring Boot 開發(fā)項(xiàng)目時(shí)需要設(shè)置多環(huán)境(測(cè)試環(huán)境與生產(chǎn)環(huán)境等),但是項(xiàng)目打包卻只能指定一種環(huán)境,有沒有一種辦法,能夠只打一個(gè) jar 包,但是啟動(dòng)的時(shí)候指定項(xiàng)目環(huán)境?作者經(jīng)過在網(wǎng)上查閱資料并測(cè)試,發(fā)現(xiàn)這一功能可以實(shí)現(xiàn),這就大大方便了項(xiàng)目的部署工作(可以實(shí)現(xiàn)多環(huán)境自動(dòng)部署)。

2 核心代碼

2.1 spring Boot 多環(huán)境配置

../demo-web/src/main/resources/application.yml
## spring config
spring:
  # environment: dev|test|pro
  profiles:
    active: dev

2.2 spring Boot 項(xiàng)目啟動(dòng)命令

Linux 命令行后臺(tái)啟動(dòng) spring boot jar:

nohup java -jar xxx.jar --spring.profiles.active=test > /dev/null 2>&1 &

根據(jù)不同的部署環(huán)境修改 --spring.profiles.active 值即可

3 Spring boot 簡(jiǎn)易啟動(dòng)與停止 shell 腳本

3.1 啟動(dòng)腳本

../doc/script/start-springboot.sh
#!/bin/sh
# 
# 啟動(dòng) jar 運(yùn)行

# 項(xiàng)目部署目錄
projectDir=/opt/springboot/
# 項(xiàng)目運(yùn)行 jar 名稱
jarName="springbootdemo.jar"
# 腳本日志目錄
logDir=/var/log/springbootdemo/
# 項(xiàng)目部署環(huán)境
profileActive=dev

# 這里的-x 參數(shù)判斷${logDir}是否存在并且是否具有可執(zhí)行權(quán)限 
if [ ! -x "${logDir}" ]; then 
  mkdir -p "${logDir}" 
fi 

# 判斷項(xiàng)目SpringBoot程序是否運(yùn)行
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') 啟動(dòng) ${jarName} 程序 ... ..." >> ${logDir}$(date "+%Y-%m-%d").log    
else
    echo "$(date '+%Y-%m-%d %H:%M:%S') ${jarName} 程序運(yùn)行正常 !!! !!!" >> ${logDir}$(date "+%Y-%m-%d").log
fi

3.2 停止腳本

../doc/script/stop-springboot.sh
#!/bin/sh
# 
# 停止 jar 運(yùn)行

# 項(xiàng)目部署目錄
projectDir="/opt/springboot/"
# 項(xiàng)目運(yùn)行 jar 名稱
jarName="springbootdemo.jar"
# 腳本名稱
scriptName="stop-springboot.sh"

# 判斷項(xiàng)目SpringBoot程序是否運(yùn)行
count=$(ps -ef |grep ${jarName} |grep -v "grep" |wc -l)
if [ ${count} -gt 0 ]; then
    echo "已經(jīng)存在 ${count} 個(gè)${jarName} 程序在運(yùn)行"
    # 獲取正在運(yùn)行的程序進(jìn)程 id(排除 grep 本身、awk 命令以及腳本本身)
    jarPid=$(ps x | grep ${jarName} | grep -v grep | grep -v '${scriptName}' | awk '{print $1}')
    # 停止正在運(yùn)行的項(xiàng)目進(jìn)程 
    kill -9 ${jarPid}
    output=`echo "正在關(guān)閉${jarName}程序,進(jìn)程id: ${jarPid}"`
    echo ${output}
else
    echo '沒有對(duì)應(yīng)的程序在運(yùn)行'
fi

# 刪除  jar 包
rm -rf ${projectDir}${jarName}
# 進(jìn)入 項(xiàng)目部署目錄
cd ${projectDir}

3.3 監(jiān)控 Spring Boot 項(xiàng)目

生產(chǎn)環(huán)境中如果因?yàn)楦鞣N原因從而導(dǎo)致項(xiàng)目停止運(yùn)行,則此時(shí)服務(wù)器便不能對(duì)外提供服務(wù),為了保證服務(wù)能夠在無人值守的時(shí)間段內(nèi)持續(xù)提供服務(wù),實(shí)現(xiàn)項(xiàng)目的自動(dòng) 修復(fù)/重啟 顯得尤為重要。在這里,使用一種簡(jiǎn)單粗暴的方式,項(xiàng)目掛掉,直接重啟,通過使用定時(shí)任務(wù)執(zhí)行啟動(dòng)腳本即可。

定時(shí)任務(wù) crontab 簡(jiǎn)單使用,以 centOS 7 為例:

開機(jī)啟動(dòng)定時(shí)任務(wù)服務(wù)

systemctl enable cornd

啟動(dòng)定時(shí)任務(wù)

systemctl start cornd

關(guān)閉定時(shí)任務(wù)服務(wù)

systemctl stop crond

添加、編輯定時(shí)任務(wù)

crontab -e

內(nèi)容如下:

00,10,20,30,40,50 * * * * /root/script/start-xxx.sh

當(dāng)前定時(shí)任務(wù)意思為每 10 分鐘執(zhí)行一次同步腳本

cron 表達(dá)式說明:

* * * * * 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/

注意事項(xiàng) : */5 * * * * 表示每 5 分鐘執(zhí)行一次,但是可能會(huì)在部分系統(tǒng)中不執(zhí)行

4 Github 源碼

Gtihub 源碼地址 : https://github.com/Flying9001/springBootDemo

springboot項(xiàng)目啟動(dòng)參數(shù)詳解

本文介紹springboot項(xiàng)目啟動(dòng)時(shí)增加啟動(dòng)參數(shù)的多種方式,我們都知道Spring在注入屬性時(shí)可以通過@Value注解注入屬性,那么@Value可以讀取的范圍有哪些呢?這就是本文的主要內(nèi)容。

以下幾種方式都可以被@Value讀取到

1、java -jar -Dserver.port=8888 -Xms1024m demo.jar

這種方式增加的參數(shù)是被設(shè)置到應(yīng)用的系統(tǒng)屬性中,可以使用System.getProperty(“server.port”)獲取(可以在idea的idea VM options中配置,以空格分隔)

-D(defintion)表示自定義參數(shù)

2、java -jar demo.jar --server.port=8888

這種方式增加的參數(shù)是屬于命令行參數(shù),即會(huì)從springboot啟動(dòng)時(shí)的main方法的String[] args中作為參數(shù)傳入(可以在idea的program arguments中配置,以空格分隔)

3、從操作系統(tǒng)的環(huán)境變量中讀取

這種方式的參數(shù)即屬于操作系統(tǒng)方面的,比如安裝jdk時(shí)設(shè)置的環(huán)境變量,定義JAVA_HOME,也可以通過System.getenv(“JAVA_HOME”)獲取,(可以在idea的VM Environment variables中配置,以;分隔)

4、通過項(xiàng)目中配置文件bootstrap/application文件載入

這種方式是在項(xiàng)目中配置的方式,比較常見

以上就是常見的多種方式介紹

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java算法比賽常用方法實(shí)例總結(jié)

    Java算法比賽常用方法實(shí)例總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java算法比賽常用方法實(shí)例總結(jié)的相關(guān)資料,文中給出了詳細(xì)的實(shí)例介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)java算法具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-05-05
  • 如何通過Java實(shí)現(xiàn)PDF轉(zhuǎn)高質(zhì)量圖片

    如何通過Java實(shí)現(xiàn)PDF轉(zhuǎn)高質(zhì)量圖片

    在Java中,將PDF文件轉(zhuǎn)換為高質(zhì)量的圖片可以使用不同的庫,其中最常用的庫之一是?Apache?PDFBox,下面我們就來看看這個(gè)庫的具體使用吧
    2024-10-10
  • Java開發(fā)之Lombok指南

    Java開發(fā)之Lombok指南

    Lombok是一款Java開發(fā)插件,使得Java開發(fā)者可以通過其定義的一些注解來消除業(yè)務(wù)工程中冗長和繁瑣的代碼,它能夠在編譯源代碼期間自動(dòng)幫我們生成這些方法,并沒有如反射那樣降低程序的性能。下面我們來詳細(xì)了解一下吧
    2019-06-06
  • Java中接口和抽象類的區(qū)別詳解

    Java中接口和抽象類的區(qū)別詳解

    這篇文章主要介紹了Java中接口和抽象類的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Spring @Transactional注解失效解決方案

    Spring @Transactional注解失效解決方案

    這篇文章主要介紹了Spring @Transactional注解失效解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 多線程死鎖的產(chǎn)生以及如何避免死鎖方法(詳解)

    多線程死鎖的產(chǎn)生以及如何避免死鎖方法(詳解)

    下面小編就為大家?guī)硪黄嗑€程死鎖的產(chǎn)生以及如何避免死鎖方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • Jenkins Host key verification failed問題解決

    Jenkins Host key verification failed問題解決

    這篇文章主要介紹了Jenkins Host key verification failed問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 詳解IDEA社區(qū)版(Community)和付費(fèi)版(UItimate)的區(qū)別

    詳解IDEA社區(qū)版(Community)和付費(fèi)版(UItimate)的區(qū)別

    這篇文章主要介紹了詳解IDEA社區(qū)版(Community)和付費(fèi)版(UItimate)的區(qū)別,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java不能真正泛型的原因是什么?

    Java不能真正泛型的原因是什么?

    今天我來給大家講一下,Java 不能實(shí)現(xiàn)真正泛型的原因是什么?感興趣的朋友可以看一下,如果能給你到來一些幫助,請(qǐng)關(guān)注小編的其他內(nèi)容
    2021-08-08
  • Maven中的庫repository詳解

    Maven中的庫repository詳解

    Maven中要配置庫,可以有多種方式,最直接的是在項(xiàng)目中的pom.xml文件中,通過<repositories>配置庫,這樣配置的庫僅適用于當(dāng)前項(xiàng)目,這篇文章主要介紹了Maven中的庫(repository),需要的朋友可以參考下
    2024-01-01

最新評(píng)論

胶州市| 襄樊市| 宣城市| 繁峙县| 长岛县| 揭阳市| 湛江市| 兴化市| 永靖县| 从化市| 东台市| 丹巴县| 闸北区| 扎兰屯市| 洪洞县| 北流市| 宜川县| 清镇市| 莱芜市| 花莲市| 依兰县| 大悟县| 额济纳旗| 修水县| 东山县| 拉萨市| 莫力| 昔阳县| 双城市| 齐齐哈尔市| 绥宁县| 微山县| 乡城县| 昭平县| 建湖县| 葫芦岛市| 南丰县| 安新县| 南涧| 武胜县| 彝良县|