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

項目中SpringBoot配置文件未生效的原因分析與解決方法

 更新時間:2025年09月04日 08:35:32   作者:網(wǎng)羅開發(fā)  
在日常開發(fā) Spring Boot 項目的時候,大家應(yīng)該都遇到過這樣一種情況:明明寫了 application.yml,但是項目跑起來之后,配置好像完全沒被加載,下面我們就來聊聊Spring Boot 配置文件未生效 的幾個典型場景與解決方法吧

前言

在日常開發(fā) Spring Boot 項目的時候,大家應(yīng)該都遇到過這樣一種情況:明明寫了 application.yml,但是項目跑起來之后,配置好像完全沒被加載。比如數(shù)據(jù)庫連接還是舊的值,日志級別也沒生效。這種情況其實挺常見,往往不是 Spring Boot 本身有問題,而是我們在配置文件路徑、Profile 激活或者 IDE 啟動參數(shù)上出了岔子。

這篇文章就來聊聊 Spring Boot 配置文件未生效 的幾個典型場景,并配合 Demo 代碼來演示如何解決。

配置文件路徑問題

首先需要明確:Spring Boot 默認(rèn)會從以下位置加載配置文件(優(yōu)先級從高到低):

  • classpath:/application.yml
  • classpath:/config/application.yml
  • file:./application.yml
  • file:./config/application.yml

所以,如果你把 application.yml 放在了一個奇怪的位置(比如 resources/configs/),自然不會生效。

來看個例子:

# src/main/resources/application.yml
server:
  port: 8081

spring:
  application:
    name: demo-app

然后寫一個最簡單的 Spring Boot 應(yīng)用:

@SpringBootApplication
@RestController
public class DemoApplication {

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

    @GetMapping("/hello")
    public String hello() {
        return "App is running on port: " + port;
    }

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

如果 application.yml 正常被加載,啟動后訪問 http://localhost:8081/hello,會看到:

App is running on port: 8081

但如果你把 application.yml 放到 src/main/resources/configs/application.yml,那它就不會生效,Spring Boot 根本不會去那個目錄找。

解決辦法:要么挪到正確路徑,要么用 --spring.config.location 指定路徑:

java -jar demo.jar --spring.config.location=classpath:/configs/

Profile 沒有正確激活

Spring Boot 支持多環(huán)境配置,比如:

# application.yml
spring:
  profiles:
    active: dev
# application-dev.yml
server:
  port: 8082

# application-prod.yml
server:
  port: 8083

如果你沒激活 profile,那么默認(rèn)只會加載 application.yml。有時候大家忘記在 application.yml 里寫 spring.profiles.active,導(dǎo)致環(huán)境配置根本沒切換。

另一種情況是你在 IDEA 里配置了 VM options,例如:

-Dspring.profiles.active=prod

那就會優(yōu)先使用 application-prod.yml,而不是 application-dev.yml。

小 Demo 驗證

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

@GetMapping("/profile")
public String profile() {
    return "Running on port: " + port;
}

當(dāng)激活 dev 時,返回 Running on port: 8082;當(dāng)激活 prod 時,返回 Running on port: 8083

如果你明明寫了 application-dev.yml 卻發(fā)現(xiàn)不起作用,那大概率是 spring.profiles.active 沒有正確指定。

IDEA 啟動配置的問題

很多同學(xué)在用 IDEA 跑 Spring Boot 項目的時候,遇到配置不生效,其實是因為 IDEA 的 Run/Debug Configurations 里沒傳遞參數(shù)。

比如你在命令行里用:

java -jar demo.jar --spring.profiles.active=dev

是沒問題的。

但是在 IDEA 里如果你什么都不配,就可能跑成默認(rèn)環(huán)境。正確做法是在 Run/Debug Configurations → VM options 里加上:

-Dspring.profiles.active=dev

這樣無論是運行還是調(diào)試,都會加載對應(yīng)的配置文件。

實際場景舉例

舉個比較真實的場景:

有個同事寫了 application-dev.yml 配置了數(shù)據(jù)庫連接:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/demo
    username: root
    password: root123

結(jié)果啟動的時候報錯:

Cannot load driver class: com.mysql.cj.jdbc.Driver

后來排查發(fā)現(xiàn),原因有兩個:

  • application-dev.yml 沒生效,因為 spring.profiles.active 沒指定;
  • Maven 依賴缺少 mysql-connector-java。

改好之后就正常運行了。這個案例說明:配置文件問題往往不止一個,要結(jié)合日志一步步分析。

總結(jié)

Spring Boot 配置文件未生效主要有三個大坑:

  • 路徑問題:放錯位置,Spring Boot 根本找不到。
  • Profile 激活問題:沒指定 spring.profiles.active,導(dǎo)致環(huán)境沒切換。
  • IDEA 配置問題:運行參數(shù)沒傳遞,結(jié)果和預(yù)期不一致。

我的建議是:

  • 路徑一定放在標(biāo)準(zhǔn)目錄;
  • 配置多環(huán)境時,一定檢查 spring.profiles.active;
  • 用 IDEA 啟動時,確保 VM options 和命令行一致;
  • 另外,多看看啟動日志,Spring Boot 在啟動時會打印加載了哪些配置文件,非常直觀。

到此這篇關(guān)于項目中SpringBoot配置文件未生效的原因分析與解決方法的文章就介紹到這了,更多相關(guān)SpringBoot配置文件未生效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PostMan傳@RequestParam修飾的數(shù)組方式

    PostMan傳@RequestParam修飾的數(shù)組方式

    這篇文章主要介紹了PostMan傳@RequestParam修飾的數(shù)組方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 詳解java代碼中init method和destroy method的三種使用方式

    詳解java代碼中init method和destroy method的三種使用方式

    這篇文章主要介紹了詳解java代碼中init method和destroy method的三種使用方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Intellij?IDEA?中調(diào)試?maven?插件的步驟

    Intellij?IDEA?中調(diào)試?maven?插件的步驟

    這篇文章主要介紹了Intellij?IDEA?中調(diào)試?maven?插件,本文分步驟給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Java抽象類和抽象方法定義與用法實例詳解

    Java抽象類和抽象方法定義與用法實例詳解

    這篇文章主要介紹了Java抽象類和抽象方法定義與用法,結(jié)合實例形式詳細(xì)分析了Java抽象類和抽象方法相關(guān)原理、定義、使用方法及操作注意事項,需要的朋友可以參考下
    2019-11-11
  • 關(guān)于Spring?Boot項目的?log4j2?核彈漏洞問題(一行代碼配置搞定)

    關(guān)于Spring?Boot項目的?log4j2?核彈漏洞問題(一行代碼配置搞定)

    相信昨天,很多小伙伴都因為Log4j2的史詩級漏洞忙翻了吧,不過我看到群里發(fā)出來的各種修復(fù)方法,還真是不好看...所以這里也提一下Spring Boot用戶怎么修復(fù)最簡單吧,對Spring Boot log4j2 核彈漏洞問題感興趣的朋友參考下吧
    2021-12-12
  • 解決httpServletRequest.getParameter獲取不到參數(shù)的問題

    解決httpServletRequest.getParameter獲取不到參數(shù)的問題

    這篇文章主要介紹了解決httpServletRequest.getParameter獲取不到參數(shù)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • SpringBoot自動裝配原理及分析

    SpringBoot自動裝配原理及分析

    SpringBoot通過@SpringBootApplication注解啟動自動裝配,其中@EnableAutoConfiguration導(dǎo)入AutoConfigurationImportSelect類,讀取META-INF下的配置文件,根據(jù)@Conditional條件篩選并注入符合條件的Bean到IOC容器
    2025-09-09
  • Spring boot如何快速的配置多個Redis數(shù)據(jù)源

    Spring boot如何快速的配置多個Redis數(shù)據(jù)源

    這篇文章主要介紹了Spring boot如何快速的配置多個Redis數(shù)據(jù)源,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • MybatisPlus字段自動填充失效,填充值為null的解決方案

    MybatisPlus字段自動填充失效,填充值為null的解決方案

    這篇文章主要介紹了MybatisPlus字段自動填充失效,填充值為null的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java語言面向?qū)ο缶幊趟枷胫惻c對象實例詳解

    Java語言面向?qū)ο缶幊趟枷胫惻c對象實例詳解

    這篇文章主要介紹了Java語言面向?qū)ο缶幊趟枷胫惻c對象實例詳解,還是十分不錯的,這里給大家分享下,需要的朋友可以參考。
    2017-10-10

最新評論

达州市| 滦平县| 江华| 曲周县| 泽州县| 九龙坡区| 西盟| 北安市| 葵青区| 石泉县| 大名县| 天台县| 黎川县| 龙南县| 枞阳县| 峨眉山市| 池州市| 贵德县| 柏乡县| 尼玛县| 沽源县| 固阳县| 桐乡市| 克拉玛依市| 泸溪县| 开远市| 苗栗市| 临汾市| 嘉兴市| 大同县| 二连浩特市| 张家口市| 德州市| 蚌埠市| 古交市| 措勤县| 荣昌县| 义乌市| 巴林左旗| 凯里市| 临朐县|