日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot笔记:SpringBoot启动参数配置

發布時間:2025/3/19 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot笔记:SpringBoot启动参数配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 目的
  • 測試代碼
    • 配置文件配置
    • 獲取自定義參數
    • 項目打包發布
    • 修改啟動配置
      • 方式一:系統變量
      • 方式二:命令行參數
  • springboot啟動參數解釋

目的

1、熟悉springboot多環境配置
2、熟悉springboot使用jar包啟動時候的參數含義

測試代碼

配置文件配置

application.yml

# springboot多環境配置 # springboot多環境配置 #端口,項目上下文 server:port: 8080servlet:context-path: /springboot-params-demo# 默認啟動的是測試環境配置 spring:profiles:active: test# 日志輸出配置 logging:level:root: INFOorg:springframework:security: WARNweb: ERRORfile:path: ./logsname: './logs/springboot-params-demo.log'pattern:file: '%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n'console: '%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n'

application-test.yml

# 自定義的參數 myParam: 'on'

application-prod.yml

# 自定義的參數 myParam: 'close'

獲取自定義參數

package com.demo.config;import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component;import java.util.Arrays;@Component @Slf4j public class MyParamRunner implements CommandLineRunner {/*** 自定義測試參數*/@Value("${myParam}")String myParam;/*** 獲取環境變量參數*/@AutowiredEnvironment environment;@Overridepublic void run(String... args) throws Exception {log.info("本地設置的參數myParam為:{}", myParam);log.info(environment.toString());log.info(String.valueOf(Arrays.asList(environment.getActiveProfiles())));} }

項目打包發布

打包后springboot-jvm-params-1.0-SNAPSHOT.jar文件存放目錄如下:

啟動jar包進行測試:

java -jar /usr/local/springboot_demos/springboot-port8001/springboot-jvm-params-1.0-SNAPSHOT.jar

修改啟動配置

方式一:系統變量

java -jar -Dspring.profiles.active=prod /usr/local/springboot_demos/springboot-port8001/springboot-jvm-params-1.0-SNAPSHOT.jar

方式二:命令行參數

java -jar /usr/local/springboot_demos/springboot-port8001/springboot-jvm-params-1.0-SNAPSHOT.jar --spring.profiles.active=prod --myParam='test'


注意以上兩種方式的區別,我們可以在啟動參數里修改我們配置文件中配置的參數。這里是將myParam='close’修改為myParam=‘test’

如果是下面的配置結果myParam會是什么?

java -jar -DmyParam='test1' /usr/local/springboot_demos/springboot-port8001/springboot-jvm-params-1.0-SNAPSHOT.jar ---spring.profiles.active=prod --myParam='test2'


由上可以得出,Springboot加載參數的優先級:配置文件變量 < JVM系統變量 < 命令行參數

springboot啟動參數解釋

測試配置的的參數如下:

/usr/local/jdk/jdk1.8.0_261/bin/java -jar -server \ ## 服務模式,linux默認是server模式,window默認是client參數 -XX:+HeapDumpOnOutOfMemoryError \ ## 當OOM發生時自動生成Heap Dump文件 -XX:HeapDumpPath=/usr/local/springboot_demos/springboot-port8001/dump/heap/oom.hprof \ ## 指定發生OOM時生成Dump文件存儲位置 -Djava.io.tmpdir=/usr/local/springboot_demos/springboot-port8001/tmp/ \ ## 指定操作系統緩存的臨時目錄 -Dserver.port=8001 \ ## web服務使用端口 -Dcom.sun.management.jmxremote \ ## 是否支持遠程JMX訪問,默認true -Dcom.sun.management.jmxremote.port=5103 \ ## 配置jmx遠程connection的端口號,要確認這個端口沒有被占用 -Dcom.sun.management.jmxremote.rmi.port=6103 \ ## JMX在遠程連接時,會隨機開啟一個RMI端口作為連接的數據端口 -Dcom.sun.management.jmxremote.authenticate=false \ ## 是否需要開啟用戶認證,默認開啟 -Dcom.sun.management.jmxremote.ssl=false \ ## 是否連接開啟SSL加密,默認開啟 -Dcom.sun.management.jmxremote.access.file=/usr/local/jdk/jdk1.8.0_261/jre/lib/management/jmxremote.access \ ## 對訪問用戶的權限授權的文件的路徑,默認路徑是${JRE_HOME}/lib/management/jmxremote.access -Xmx256m \ ## 設置堆最大空間為256m -Xms256m \ ## 設置堆最小空間為256m -XX:+DisableExplicitGC \ ## 禁止手動的system.gc -Xloggc:/usr/local/springboot_demos/springboot-port8001/logs/springboot-jvm-params_gc.%t.log \ ## gc日志存放的位置 -XX:+PrintHeapAtGC \ ## HotSpot在GC前后都會將GC堆的概要狀況輸出到log中 -XX:+PrintTenuringDistribution \ ## 打印Survivor對象年齡分布 -XX:+PrintGCApplicationStoppedTime \ ## 預估垃圾收集"Stop the world"暫停所阻塞的時間 -XX:+PrintGCTaskTimeStamps \ ## 打印gc線程的時間戳 -XX:+PrintGCDetails \ ## 打印gc詳情 -XX:+PrintGCDateStamps \ ## 日志開頭顯示日期以及時間 -Dserver.connection-timeout=60000 \ ## HTTP請求超時時間 -Dserver.tomcat.accept-count=1000 \ ## 所有可能的請求處理線程正在使用時,傳入連接請求的最大隊列長度 -Dserver.tomcat.max-threads=300 \ ## 最大工作線程數 -Dserver.tomcat.min-spare-threads=65 \ ## 最小工作線程數 -Dserver.tomcat.accesslog.enabled=false \ ## 啟用訪問你日志 -Dserver.tomcat.accesslog.directory=/usr/local/springboot_demos/springboot-port8001/logs/ \ ## 日志文件路徑 -Dserver.tomcat.accesslog.prefix=access_log \ ## 日志文件名前綴 -Dserver.tomcat.accesslog.pattern=combined \ ## 日志格式 -Dserver.tomcat.accesslog.suffix=.log \ ## 日志文件后綴 -Dserver.tomcat.accesslog.file-date-format=.yyyy-MM-dd ## 放在日志文件名中的日期格式 -Dserver.tomcat.accesslog.rotate=true \ ## 是否啟用訪問日志分割 -Dserver.tomcat.accesslog.rename-on-rotate=true \ ## 推遲在文件名中加入日期表示,直到日志分割時 -Dserver.tomcat.accesslog.request-attributes-enabled=true \ ## 為請求使用的IP地址、主機名、協議和端口設置請求屬性 -Dserver.tomcat.accesslog.buffered=true \ ## 緩存日志定期刷新輸出(建議設置為true,否則當有請求立即打印日志對服務的響應會有影響) -XX:NewRatio=4 \ ## 設置YangOld的比例,設置4OldYang4倍,即Yang1/5 -XX:SurvivorRatio=8 \ ## 設置EdenSuivior的比例,Eden:S0:S1=8:1:1 -XX:MaxTenuringThreshold=15 \ ## 在新生代對象存活次數(經過Minor GC的次數)超過n后,就會晉升到老年代 -XX:TargetSurvivorRatio=90 \ ## 在新生代的對象不一定要滿足存活年齡達到MaxTenuringThreshold才能去老年代,當Survivor空間中相同年齡所有對象大小總和大于[Desired survivor size]時,年齡大于或等于該年齡的對象直接進入老年代。[Desired survivor size]=單個survivor大小*TargetSurvivorRatio百分比 -XX:+UseCMSInitiatingOccupancyOnly \ ## 指在使用CMS收集器的情況下,老年代使用了指定閾值的內存時,觸發FullGC -XX:CMSInitiatingOccupancyFraction=70 \ ## 指在使用CMS收集器的情況下,老年代使用達到70%,出發CMS垃圾回收 -XX:ParallelGCThreads=8 \ ## parallel回收的時候可以設置年輕代的并行線程數,取決于cpu核數 -XX:ConcGCThreads=2 \ ## 設置并行標記的線程數。將n設置為并行垃圾回收線程數(ParallelGCThreads)1/4 左右。 -XX:-UseGCOverheadLimit \ ## jvm gc行為中超過98%以上的時間去釋放小于2%的堆空間時會報“GC overhead limit exceeded”錯誤,此參數避免此報錯 -XX:+UseParNewGC \ ## 開啟此參數使用ParNew & serial old搜集器(不推薦)使用這個參數后會在新生代進行并行回收 -XX:+UseConcMarkSweepGC \ ## 開啟此參數使用ParNew & CMS(serial old為替補)搜集器 -XX:CMSFullGCsBeforeCompaction=1 \ ## 設置在幾次CMS垃圾收集后,觸發一次內存整理 -XX:+CMSParallelRemarkEnabled \ ## 降低標記停頓 -XX:+CMSScavengeBeforeRemark \ ## 開啟或關閉在 CMS-remark 階段之前的清除(Young GC)嘗試 -XX:+ParallelRefProcEnabled \ ## 并行處理Reference,加快處理速度,縮短耗時 -XX:+UseCMSCompactAtFullCollection \ ## 年老代使用CMS,默認是不會整理堆碎片的。設置此配置打開對年老代的壓縮,即執行Full GC后對內存進行整理壓縮,免得產生內存碎片,但有可能會影響性能。 -XX:CMSMaxAbortablePrecleanTime=6000 \ ## 指定CMS-concurrent-abortable-preclean階段執行的時間,該階段主要是執行一些預清理,減少應用暫停的時間 -XX:CompileThreshold=10 \ ## 超過10此進行JTI即時編譯 -XX:MaxInlineSize=1024 \ ## 方法體的大小閾值。通過 -XX:CompileThreshold 來設置熱點方法的閾值。但要強調一點,熱點方法不一定會被 JVM 做內聯優化,如果這個方法體太大了,JVM 將不執行內聯操作 -Dsun.net.client.defaultConnectTimeout=60000 \ ## socket連接超時時間 -Dsun.net.client.defaultReadTimeout=60000 \ ## socket讀取超時時間 -Dnetworkaddress.cache.ttl=300 \ ## JVM的DNS緩存有效期,單位秒 -Dsun.net.inetaddr.ttl=300 \ ## 緩存失敗結果,如果在緩存時效內再次lookup時直接返回錯誤(減輕DNS服務壓力) -Djsse.enableCBCProtection=false \ ## 關閉jvm中的java修復程序 -Djava.security.egd=file:/dev/./urandom \ ## 加快隨機數產生過程 -Dfile.encoding=UTF-8 \ ## 指定web應用編碼 -Dlog.path=/usr/local/springboot_demos/springboot-port8001/logs/ \ ## 指定項目日志文件路徑 -Dspring.profiles.active=prod \ ## 指定運行的環境配置 /usr/local/springboot_demos/springboot-port8001/springboot-jvm-params-1.0-SNAPSHOT.jar jvmparams 與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的SpringBoot笔记:SpringBoot启动参数配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。