欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文帶你了解SpringBoot中啟動參數(shù)的各種用法

 更新時間:2025年03月25日 11:24:10   作者:jiajia651304  
在使用 Spring Boot開發(fā)應用時,我們通常需要根據(jù)不同的環(huán)境或特定需求調整啟動參數(shù),那么,Spring Boot 提供了哪些方式來配置這些啟動參數(shù)呢,下面小編就來和大家介紹一下吧

在使用 Spring Boot 開發(fā)應用時,我們通常需要根據(jù)不同的環(huán)境(開發(fā)、測試、生產)或特定需求調整啟動參數(shù),例如:

  • 修改默認端口
  • 指定不同的配置文件
  • 控制 JVM 內存大小
  • 傳遞自定義參數(shù)

那么,Spring Boot 提供了哪些方式來配置這些啟動參數(shù)?今天我們就來詳細解析 Spring Boot 啟動參數(shù)的各種用法,并附帶代碼示例,讓你可以靈活掌控應用的啟動過程。

一、啟動參數(shù)的常見傳遞方式

Spring Boot 允許我們通過以下幾種方式傳遞啟動參數(shù):

方式適用場景示例
命令行參數(shù)適用于臨時修改配置java -jar app.jar --server.port=8081
application.properties/yml適用于項目默認配置server.port=8081
環(huán)境變量適用于 Docker/K8S 部署export SERVER_PORT=8081
JVM 啟動參數(shù)適用于調整 JVM 運行時行為-Xmx512m -Dspring.profiles.active=prod
System.getProperty() 讀取適用于自定義動態(tài)參數(shù)System.getProperty("custom.param")

接下來,我們逐個解析這些方式的用法和示例代碼。

二、通過命令行參數(shù)傳遞啟動參數(shù)

最簡單的方式是在啟動 jar 文件時,使用 --參數(shù)名=值 的格式來傳遞參數(shù)。

示例:修改 Spring Boot 端口

java -jar myapp.jar --server.port=8081

效果:應用啟動后,監(jiān)聽的端口會變?yōu)?8081。

如果想傳遞多個參數(shù),可以這樣寫:

java -jar myapp.jar --server.port=8081 --spring.application.name=myapp

注意:命令行參數(shù)的優(yōu)先級比 application.properties 更高,即使 application.properties 里定義了 server.port=8080,命令行傳遞的 8081 仍然會覆蓋它。

三、使用 application.properties 或 application.yml 配置參數(shù)

Spring Boot 提供了 application.properties(或 application.yml)來管理應用配置,這種方式適用于默認參數(shù)配置。

示例:application.properties

server.port=8082
spring.application.name=myapp
logging.level.root=INFO

示例:application.yml

server:
  port: 8082
spring:
  application:
    name: myapp
logging:
  level:
    root: INFO

優(yōu)點:

  • 適用于長期配置,不用每次啟動都傳遞參數(shù)。
  • 配置清晰,可集中管理多個環(huán)境的參數(shù)。

缺點:

  • 配置是靜態(tài)的,運行時修改需要重啟應用。
  • 無法動態(tài)傳遞參數(shù)。

四、使用環(huán)境變量傳遞參數(shù)

在 Docker 或 Kubernetes(K8S)等容器環(huán)境中,通常使用環(huán)境變量傳遞參數(shù)。Spring Boot 默認支持從環(huán)境變量讀取參數(shù)。

示例:設置環(huán)境變量并啟動應用

export SERVER_PORT=9090
export SPRING_APPLICATION_NAME=MySpringApp
java -jar myapp.jar

或者在 Windows cmd 中:

set SERVER_PORT=9090
java -jar myapp.jar

效果:Spring Boot 會自動讀取 SERVER_PORT 并將其作為 server.port 的值,即應用會運行在 9090 端口。

五、使用 JVM 啟動參數(shù)傳遞參數(shù)

如果我們希望在 JVM 層面?zhèn)鬟f參數(shù),可以使用 -D 選項。

示例:指定運行環(huán)境

java -Dspring.profiles.active=prod -jar myapp.jar

在代碼中可以這樣獲取:

String profile = System.getProperty("spring.profiles.active");
System.out.println("當前環(huán)境:" + profile);

示例:限制 JVM 內存

java -Xmx512m -Xms256m -jar myapp.jar
  • -Xmx512m:最大內存 512MB
  • -Xms256m:初始內存 256MB

應用場景:

  • 適用于不同環(huán)境(開發(fā)、測試、生產)的參數(shù)切換。
  • 適用于 JVM 級別的優(yōu)化(如 GC、線程管理等)。

六、Spring Boot 讀取啟動參數(shù)的代碼示例

在 Spring Boot 應用中,我們可以通過 @Value、Environment 或 System.getProperty() 讀取啟動參數(shù)。

1. 通過 @Value 讀取參數(shù)

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/config")
public class ConfigController {

    @Value("${server.port}")
    private String serverPort;

    @Value("${spring.application.name}")
    private String appName;

    @GetMapping("/info")
    public String getConfigInfo() {
        return "App: " + appName + ", Running on Port: " + serverPort;
    }
}

2. 通過 Environment 讀取參數(shù)

import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class EnvController {

    private final Environment env;

    public EnvController(Environment env) {
        this.env = env;
    }

    @GetMapping("/env")
    public String getEnvInfo() {
        return "Profile: " + env.getProperty("spring.profiles.active") +
               ", Server Port: " + env.getProperty("server.port");
    }
}

3. 通過 System.getProperty() 讀取 JVM 級別參數(shù)

@GetMapping("/jvm")
public String getJvmParams() {
    return "JVM Param: " + System.getProperty("custom.param", "默認值");
}

如果我們用以下方式啟動應用:

java -Dcustom.param=myValue -jar myapp.jar

那么 /jvm 接口會返回:

JVM Param: myValue

七、總結:如何選擇合適的啟動參數(shù)方式

方式適用場景是否可動態(tài)修改優(yōu)先級
命令行參數(shù)適用于臨時配置,如測試??? 最高
application.properties適用于默認配置??? 低
環(huán)境變量適用于容器化部署??? 高
JVM 參數(shù)適用于調整 JVM 行為??? 高

最佳實踐

1.開發(fā)環(huán)境:使用 application.properties 作為默認配置。

2.測試環(huán)境:使用命令行參數(shù)或環(huán)境變量傳遞測試配置。

3.生產環(huán)境:使用 -Dspring.profiles.active=prod + 環(huán)境變量,實現(xiàn)動態(tài)配置管理。

掌握 Spring Boot 啟動參數(shù),你的應用將更加靈活高效! 

到此這篇關于一文帶你了解SpringBoot中啟動參數(shù)的各種用法的文章就介紹到這了,更多相關SpringBoot啟動參數(shù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 如何設置springboot啟動端口

    如何設置springboot啟動端口

    spring boot是個好東西,可以不用容器直接在main方法中啟動,而且無需配置文件,方便快速搭建環(huán)境。下面給大家介紹springboot啟動端口的設置方法和spring boot創(chuàng)建應用端口沖突8080 問題,感興趣的朋友一起看看吧
    2017-08-08
  • Spring?MVC內置過濾器功能示例詳解

    Spring?MVC內置過濾器功能示例詳解

    這篇文章主要為大家介紹了Spring?MVC內置過濾器使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • mybatis中嵌套使用foreach需要注意的坑

    mybatis中嵌套使用foreach需要注意的坑

    在使用MyBatis進行數(shù)據(jù)庫操作時,如果需要在一個大的foreach標簽中嵌套另一個foreach,需要注意內層foreach的item屬性不能與外層重復,如果出現(xiàn)重復,會導致綁定參數(shù)時找不到正確的參數(shù),從而拋出異常
    2024-09-09
  • 深入理解Java中的類加載器原理

    深入理解Java中的類加載器原理

    這篇文章主要介紹了深入理解Java中的類加載器原理,類加載器負責加載所有的類,系統(tǒng)為所有被載入內存中的類生成一個java.lang.Class實例,需要的朋友可以參考下
    2024-01-01
  • Java與Python之間使用jython工具類實現(xiàn)數(shù)據(jù)交互

    Java與Python之間使用jython工具類實現(xiàn)數(shù)據(jù)交互

    今天小編就為大家分享一篇關于Java與Python之間使用jython工具類實現(xiàn)數(shù)據(jù)交互,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • JAVA 實現(xiàn)磁盤文件加解密操作的示例代碼

    JAVA 實現(xiàn)磁盤文件加解密操作的示例代碼

    這篇文章主要介紹了JAVA 實現(xiàn)磁盤文件加解密操作的示例代碼,幫助大家利用Java實現(xiàn)文件的加解密,感興趣的朋友可以了解下
    2020-09-09
  • Java 線程池的作用以及該如何使用

    Java 線程池的作用以及該如何使用

    這篇文章主要介紹了Java 線程池的作用以及該如何使用,幫助大家更好的理解和學習Java的相關知識,感興趣的朋友可以了解下
    2021-01-01
  • Java中Dom4j的配置與使用示例詳解

    Java中Dom4j的配置與使用示例詳解

    Dom4j是一個強大的Java庫,用于處理XML數(shù)據(jù),結合了DOM、SAX、JDOM的優(yōu)點,它可以解析、生成、修改和序列化XML文檔,適用于數(shù)據(jù)交換、配置文件管理、日志記錄、數(shù)據(jù)持久化和Web服務等場景,Dom4j提供了簡單易用的API,便于開發(fā)者進行高效的XML操作
    2024-10-10
  • Java運算符的常見問題與用法小結

    Java運算符的常見問題與用法小結

    這篇文章主要介紹了Java運算符,結合實例形式總結分析了Java各種常見運算符,包括算術運算符、比較運算符、邏輯運算符、位運算符等相關功能、原理與使用技巧,需要的朋友可以參考下
    2020-04-04
  • SpringBoot2 整合MinIO中間件實現(xiàn)文件便捷管理功能

    SpringBoot2 整合MinIO中間件實現(xiàn)文件便捷管理功能

    這篇文章主要介紹了SpringBoot2 整合MinIO中間件,實現(xiàn)文件便捷管理,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07

最新評論