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

一文帶你深入了解SpringBoot參數(shù)配置的詳細(xì)步驟

 更新時(shí)間:2025年12月25日 08:44:48   作者:悟空碼字  
SpringBoot應(yīng)用就像一個(gè)超級(jí)智能的變形金剛,而參數(shù)配置就是你手里的萬(wàn)能遙控器,下面小編就和大家詳細(xì)介紹一下SpringBoot參數(shù)配置的相關(guān)應(yīng)用,感興趣的小伙伴可以了解下

一、參數(shù)配置:程序員的“遙控器”

SpringBoot應(yīng)用就像一個(gè)超級(jí)智能的變形金剛,而參數(shù)配置就是你手里的萬(wàn)能遙控器!你想讓它變成溫柔的Hello Kitty模式?調(diào)參數(shù)!想讓它變成狂暴的哥斯拉模式?還是調(diào)參數(shù)!它就像你女朋友的脾氣——全看你如何“配置”!

參數(shù)配置的三大門(mén)派:

application.properties - 保守派,喜歡用點(diǎn)號(hào)分隔

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/my_db

application.yml - 文藝派,喜歡用縮進(jìn)寫(xiě)詩(shī)

server:
  port: 9090
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/my_db

@Value注解 - 直男派,直接注入不啰嗦

@Value("${my.secret.password}")
private String password; // 默認(rèn)值:123456(才怪?。?

二、詳細(xì)配置步驟:從“Hello World”到“Hello 宇宙”

第1步:基礎(chǔ)配置 - 給你的應(yīng)用穿條褲子

# application.yml - 基礎(chǔ)生存包
server:
  port: 8080  # 端口號(hào),建議別用80,免得和隔壁老王沖突
  servlet:
    context-path: /api  # 上下文路徑,相當(dāng)于給你的應(yīng)用加個(gè)姓
  
spring:
  application:
    name: my-awesome-app  # 應(yīng)用名,起得霸氣點(diǎn)準(zhǔn)沒(méi)錯(cuò)
  
  # 數(shù)據(jù)庫(kù)配置 - 應(yīng)用的“腸胃系統(tǒng)”
  datasource:
    url: jdbc:mysql://localhost:3306/my_db?useSSL=false&serverTimezone=UTC
    username: root
    password: IForgetItAgain  # 建議別寫(xiě)這里,用環(huán)境變量!
    driver-class-name: com.mysql.cj.jdbc.Driver
    hikari:
      maximum-pool-size: 20  # 連接池大小,人多好辦事
      minimum-idle: 5  # 最少閑著的連接,不能太懶
      connection-timeout: 30000  # 連接超時(shí),30秒還連不上就放棄吧

第2步:高級(jí)配置 - 給你的應(yīng)用裝上“渦輪增壓”

# 繼續(xù)在application.yml中添加
spring:
  # JPA配置 - 對(duì)象和數(shù)據(jù)庫(kù)的“翻譯官”
  jpa:
    show-sql: true  # 顯示SQL,方便偷看它在背后說(shuō)什么
    hibernate:
      ddl-auto: update  # 自動(dòng)更新表結(jié)構(gòu),危險(xiǎn)但方便!
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL8Dialect
  
  # Redis配置 - 應(yīng)用的“短期記憶”
  redis:
    host: localhost
    port: 6379
    timeout: 3000ms  # 超時(shí)時(shí)間,3秒還想不明白就算了
    lettuce:
      pool:
        max-active: 8  # 最大活躍連接,別太多會(huì)打架
  
  # 文件上傳配置 - 胃口大小設(shè)置
  servlet:
    multipart:
      max-file-size: 10MB  # 單個(gè)文件最大,別上傳整個(gè)電影!
      max-request-size: 100MB  # 總請(qǐng)求大小
  
# 自定義配置 - 你的專(zhuān)屬“秘密武器”
myapp:
  config:
    max-retry-count: 3  # 重試次數(shù),事不過(guò)三!
    enable-feature-x: true  # 要不要開(kāi)啟某個(gè)神秘功能
    api-key: ${API_KEY:default-key}  # 優(yōu)先用環(huán)境變量,沒(méi)有就用默認(rèn)值

第3步:Profile配置 - 應(yīng)用的多重人格

創(chuàng)建不同環(huán)境的配置文件,讓你的應(yīng)用學(xué)會(huì)“變臉”:

application.yml          # 公共配置,大家都得遵守
application-dev.yml     # 開(kāi)發(fā)環(huán)境 - 隨便折騰版
application-test.yml    # 測(cè)試環(huán)境 - 裝模作樣版  
application-prod.yml    # 生產(chǎn)環(huán)境 - 正經(jīng)上班版

application-dev.yml(開(kāi)發(fā)環(huán)境)

spring:
  datasource:
    url: jdbc:h2:mem:testdb  # 內(nèi)存數(shù)據(jù)庫(kù),用完就扔
    username: sa
    password: 
  h2:
    console:
      enabled: true  # 啟用H2控制臺(tái),可視化偷看數(shù)據(jù)
      path: /h2-console

logging:
  level:
    com.myapp: DEBUG  # 詳細(xì)日志,方便甩鍋時(shí)找證據(jù)
    org.springframework.web: DEBUG

application-prod.yml(生產(chǎn)環(huán)境)

spring:
  datasource:
    url: jdbc:mysql://prod-db:3306/prod_db?useSSL=true
    username: ${DB_USERNAME}  # 從環(huán)境變量讀取,安全第一!
    password: ${DB_PASSWORD}
    
logging:
  level:
    com.myapp: WARN  # 生產(chǎn)環(huán)境日志別太多,磁盤(pán)會(huì)哭
    org.springframework: ERROR

management:
  endpoints:
    web:
      exposure:
        include: health,info  # 只暴露必要的監(jiān)控端點(diǎn)

第4步:配置類(lèi) - 程序員最后的倔強(qiáng)

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "myapp.config")
@Data  // Lombok注解,自動(dòng)生成getter/setter
public class MyAppConfig {
    /**
     * 最大重試次數(shù)
     * 默認(rèn)值:防止有人不配置時(shí)系統(tǒng)直接崩潰
     */
    private int maxRetryCount = 3;
    
    /**
     * 是否開(kāi)啟神秘功能X
     * 默認(rèn)值:false(安全第一)
     */
    private boolean enableFeatureX = false;
    
    /**
     * API密鑰
     * 建議:寫(xiě)在配置文件里不如寫(xiě)在環(huán)境變量里
     * 寫(xiě)在環(huán)境變量里不如寫(xiě)在腦子里(但容易忘)
     */
    private String apiKey = "change-me";
    
    /**
     * 服務(wù)器列表
     * 示例配置:myapp.config.servers[0]=http://server1
     *         myapp.config.servers[1]=http://server2
     */
    private List<String> servers = new ArrayList<>();
    
    /**
     * 連接超時(shí)時(shí)間
     * 單位:毫秒
     * 哲學(xué)問(wèn)題:等待多久才算真愛(ài)?
     */
    private Duration connectionTimeout = Duration.ofSeconds(30);
}

// 使用配置類(lèi)
@Service
public class MyService {
    @Autowired
    private MyAppConfig config;
    
    public void doSomething() {
        if (config.isEnableFeatureX()) {
            System.out.println("神秘功能已開(kāi)啟,但沒(méi)人知道是啥功能");
        }
        
        for (int i = 0; i < config.getMaxRetryCount(); i++) {
            try {
                // 嘗試做事
                break;
            } catch (Exception e) {
                System.out.println("第" + (i+1) + "次失敗,還剩" + 
                    (config.getMaxRetryCount() - i - 1) + "次機(jī)會(huì)");
            }
        }
    }
}

第5步:環(huán)境變量和命令行參數(shù) - 終極武器

# 運(yùn)行時(shí)指定配置
java -jar myapp.jar --server.port=9090 --spring.profiles.active=prod

# 使用環(huán)境變量(Linux/Mac)
export SPRING_DATASOURCE_PASSWORD=SuperSecret123
export MYAPP_CONFIG_APIKEY=MyAwesomeKey
java -jar myapp.jar

# 使用環(huán)境變量(Windows PowerShell)
$env:SPRING_DATASOURCE_PASSWORD="SuperSecret123"
java -jar myapp.jar

優(yōu)先級(jí)總結(jié)(從高到低):

  • 命令行參數(shù)(--開(kāi)頭)
  • 環(huán)境變量(SPRING_APPLICATION_JSON)
  • Profile特定配置文件(application-{profile}.yml)
  • 默認(rèn)配置文件(application.yml)
  • @ConfigurationProperties默認(rèn)值

三、配置驗(yàn)證 - 給你的配置上個(gè)保險(xiǎn)

import javax.validation.constraints.*;

@Component
@ConfigurationProperties(prefix = "myapp.config")
@Validated  // 開(kāi)啟驗(yàn)證
@Data
public class ValidatedConfig {
    
    @NotNull(message = "API密鑰不能為空,除非你想裸奔")
    @Size(min = 10, max = 100, message = "API密鑰長(zhǎng)度要在10-100之間")
    private String apiKey;
    
    @Min(value = 1, message = "重試次數(shù)至少1次,放棄治療不可取")
    @Max(value = 10, message = "重試次數(shù)最多10次,要學(xué)會(huì)放棄")
    private int maxRetryCount = 3;
    
    @Pattern(regexp = "^(http|https)://.*", message = "URL必須以http或https開(kāi)頭")
    private String baseUrl;
    
    @AssertTrue(message = "如果開(kāi)啟功能X,必須提供密鑰")
    public boolean isFeatureXValid() {
        return !enableFeatureX || (apiKey != null && !apiKey.isEmpty());
    }
}

四、動(dòng)態(tài)刷新配置 - 不用重啟的魔法

# 添加Spring Cloud Config依賴(lài)后
spring:
  cloud:
    config:
      enabled: true
  config:
    import: optional:configserver:http://localhost:8888  # 配置中心地址

# 在需要刷新的類(lèi)上添加
@RefreshScope
@Component
public class ConfigRefreshService {
    @Value("${myapp.config.feature-toggle}")
    private String featureToggle;
    // 配置更新后,這個(gè)值會(huì)自動(dòng)刷新!
}

五、配置加密 - 讓密碼不再裸奔

# 使用jasypt加密敏感信息
spring:
  datasource:
    password: ENC(加密后的字符串)  # 看起來(lái)像亂碼就對(duì)了
    
# 啟動(dòng)時(shí)提供加密密鑰
java -jar myapp.jar --jasypt.encryptor.password=my-secret-key

總結(jié):配置之道,存乎一心

SpringBoot的配置系統(tǒng)就像是一套精密的樂(lè)高積木,既有現(xiàn)成的標(biāo)準(zhǔn)件(自動(dòng)配置),也允許你自由發(fā)揮(自定義配置)。掌握配置的藝術(shù),需要記住幾個(gè)核心原則:

配置的“三大紀(jì)律八項(xiàng)注意”

  • 安全第一:密碼、密鑰永遠(yuǎn)不要硬編碼,用環(huán)境變量或配置中心
  • 環(huán)境隔離:開(kāi)發(fā)、測(cè)試、生產(chǎn)配置嚴(yán)格分開(kāi),別在開(kāi)發(fā)環(huán)境玩生產(chǎn)數(shù)據(jù)
  • 適度原則:不要過(guò)度配置,SpringBoot的自動(dòng)配置已經(jīng)幫你做了80%的工作

配置的“哲學(xué)思考”

  • YAML vs Properties:YAML就像寫(xiě)詩(shī),Properties就像寫(xiě)清單,看你喜歡文藝還是務(wù)實(shí)
  • 配置優(yōu)先級(jí):記住命令行參數(shù) > 環(huán)境變量 > 配置文件,這是權(quán)力的游戲!
  • 默認(rèn)值的重要性:給配置項(xiàng)設(shè)置合理的默認(rèn)值,就像給程序買(mǎi)保險(xiǎn)

最后

記住,最好的配置是不需要配置(但這是理想狀態(tài))。SpringBoot的“約定優(yōu)于配置”理念,意味著只要你遵守約定,它就會(huì)默默為你做好一切。但當(dāng)你有特殊需求時(shí),這套強(qiáng)大的配置系統(tǒng)又能給你充分的自由。

現(xiàn)在,拿起你的配置“遙控器”,去打造一個(gè)既聽(tīng)話又能干的SpringBoot應(yīng)用吧!記?。号渲貌皇悄康?,讓?xiě)?yīng)用更好地服務(wù)業(yè)務(wù)才是終極目標(biāo)。祝你在配置的海洋里乘風(fēng)破浪,但別淹死在配置文件中!

到此這篇關(guān)于一文帶你深入了解SpringBoot參數(shù)配置的詳細(xì)步驟的文章就介紹到這了,更多相關(guān)SpringBoot參數(shù)配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring AOP與代理類(lèi)的執(zhí)行順序級(jí)別淺析

    Spring AOP與代理類(lèi)的執(zhí)行順序級(jí)別淺析

    這篇文章主要介紹了Spring AOP與代理類(lèi)的執(zhí)行順序級(jí)別,關(guān)于 Spring AOP和Aspectj的關(guān)系,兩個(gè)都實(shí)現(xiàn)了切面編程,Spring AOP更多地是為了Spring框架本身服務(wù)的,而Aspectj具有更強(qiáng)大、更完善的切面功能
    2023-03-03
  • Java校驗(yàn)validate介紹和使用實(shí)例

    Java校驗(yàn)validate介紹和使用實(shí)例

    這篇文章主要介紹了Java校驗(yàn)validate介紹和使用的相關(guān)資料,還介紹了如何使用@Valid和@Validated注解進(jìn)行聲明式校驗(yàn),以及如何處理復(fù)雜校驗(yàn)需求,通過(guò)自定義校驗(yàn)注解來(lái)實(shí)現(xiàn),需要的朋友可以參考下
    2025-01-01
  • SpringSecurity自定義登錄成功處理

    SpringSecurity自定義登錄成功處理

    這篇文章主要為大家詳細(xì)介紹了SpringSecurity自定義登錄成功處理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Java GZip 基于磁盤(pán)實(shí)現(xiàn)壓縮和解壓的方法

    Java GZip 基于磁盤(pán)實(shí)現(xiàn)壓縮和解壓的方法

    這篇文章主要介紹了Java GZip 基于磁盤(pán)實(shí)現(xiàn)壓縮和解壓,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考需要的朋友可以參考下
    2020-08-08
  • Spring中的事務(wù)管理及實(shí)現(xiàn)方式解析

    Spring中的事務(wù)管理及實(shí)現(xiàn)方式解析

    這篇文章主要介紹了Spring中的事務(wù)管理及實(shí)現(xiàn)方式解析,Spring事務(wù)管理基于底層數(shù)據(jù)庫(kù)本身的事務(wù)處理機(jī)制,數(shù)據(jù)庫(kù)事務(wù)的基礎(chǔ),是掌握Spring事務(wù)管理的基礎(chǔ),這篇總結(jié)下Spring事務(wù),需要的朋友可以參考下
    2024-01-01
  • MyBatis-Plus集成Druid環(huán)境搭建的詳細(xì)教程

    MyBatis-Plus集成Druid環(huán)境搭建的詳細(xì)教程

    這篇文章主要介紹了MyBatis-Plus集成Druid環(huán)境搭建的詳細(xì)教程,需要的朋友可以參考下
    2020-08-08
  • Maven分模塊開(kāi)發(fā)與依賴(lài)管理和聚合和繼承及屬性深入詳細(xì)介紹

    Maven分模塊開(kāi)發(fā)與依賴(lài)管理和聚合和繼承及屬性深入詳細(xì)介紹

    依賴(lài)管理是項(xiàng)目管理中非常重要的一環(huán)。幾乎任何項(xiàng)目開(kāi)發(fā)的時(shí)候需要都需要使用到庫(kù)。而這些庫(kù)很可能又依賴(lài)別的庫(kù),這樣整個(gè)項(xiàng)目的依賴(lài)形成了一個(gè)樹(shù)狀結(jié)構(gòu),而隨著這個(gè)依賴(lài)的樹(shù)的延伸和擴(kuò)大,一系列問(wèn)題就會(huì)隨之產(chǎn)生
    2022-10-10
  • Java 中的進(jìn)制轉(zhuǎn)換與編碼機(jī)制詳解

    Java 中的進(jìn)制轉(zhuǎn)換與編碼機(jī)制詳解

    在 Java 編程領(lǐng)域,進(jìn)制轉(zhuǎn)換是一項(xiàng)極為基礎(chǔ)且重要的技能,下面給大家介紹Java 中的進(jìn)制轉(zhuǎn)換與編碼機(jī)制,感興趣的朋友一起看看吧
    2025-04-04
  • Springboot啟用多個(gè)監(jiān)聽(tīng)端口代碼實(shí)例

    Springboot啟用多個(gè)監(jiān)聽(tīng)端口代碼實(shí)例

    這篇文章主要介紹了Springboot啟用多個(gè)監(jiān)聽(tīng)端口代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Spring?Boot教程之必須了解的核心概念

    Spring?Boot教程之必須了解的核心概念

    這篇文章主要介紹了Spring?Boot系列教程中的關(guān)于學(xué)習(xí)Spring?Boot必須了解的核心概念的相關(guān)資料,需要的朋友可以參考下
    2022-08-08

最新評(píng)論

勐海县| 海林市| 雅安市| 和平县| 天柱县| 张家口市| 微博| 雷波县| 阿鲁科尔沁旗| 甘南县| 钦州市| 武隆县| 合山市| 沙雅县| 普兰店市| 许昌市| 长丰县| 宁海县| 连云港市| 上高县| 鄂托克旗| 石河子市| 海晏县| 榕江县| 巢湖市| 乌鲁木齐市| 阿克| 彭州市| 三门峡市| 三穗县| 武乡县| 保山市| 莒南县| 武清区| 独山县| 宁津县| 嵩明县| 阳泉市| 江陵县| 台北市| 六枝特区|