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

SpringBoot的ConfigurationProperties或Value注解無效問題及解決

 更新時間:2024年11月01日 15:09:40   作者:Cadreman Johnson  
在SpringBoot項目開發(fā)中,全局靜態(tài)配置類讀取application.yml或application.properties文件時,可能會遇到配置值始終為null的問題,這通常是因為在創(chuàng)建靜態(tài)屬性后,IDE自動生成的Get/Set方法包含了static關鍵字

SpringBoot的ConfigurationProperties或Value注解無效

記錄一個問題

在一般的SpringBoot項目開發(fā)中,我們一般會創(chuàng)建一些全局的靜態(tài)配置類,用來讀取application.yml/application.properties配置文件的內容。

普遍的做法是利用@Component和@ConfigurationProperties(prefix = “XXX”)這兩個注解來幫我們實現(xiàn)。

# 項目相關配置
cadre:
  # 名稱
  name: cadreuc
package com.cadre.common.config;

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

/**
 * 全局配置類
 *
 * @author cadre
 */
@Component
@ConfigurationProperties(prefix = "cadreman")
public class Global
{
    /** 項目名稱 */
    private static String name;

    public static String getName()
    {
        return name;
    }

    public static void setName(String name)
    {
        Global.name = name;
    }
}

原理非常簡單,利用Spring將屬性注入到靜態(tài)類,然后通過靜態(tài)類的特性使我們可以在項目全局取到它的值。

但是,當我們照貓畫虎的創(chuàng)建了一個靜態(tài)類后,卻發(fā)現(xiàn)我們取的值始終為null。

難道是Component注解失效了嗎?并不是,我們創(chuàng)建一個同名的Bean后提示命名重復。

難道是ConfigurationProperties注解失效了嗎?帶著疑問,我們繼續(xù)研究。

發(fā)現(xiàn)問題所在

作為一名資深的CV程序員,已經多年沒有手打過Get/Set方法了。

然而問題就在這里。當我們創(chuàng)建了一個靜態(tài)屬性時,IDE幫我們生成的Get/Set方法都默認加上了static。

	/** 項目名稱 */
    private static String name;

	public static String getName()
    {
        return name;
    }

    public static void setName(String name)
    {
        Global.name = name;
    }
    

而Spring在注入這些屬性時,反射的Set方法不會對static方法起作用。

所以導致了我們的set方法沒有被調用。

解決方法

去掉Set方法的static

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • SpringBoot關于自動注入mapper為空的坑及解決

    SpringBoot關于自動注入mapper為空的坑及解決

    這篇文章主要介紹了SpringBoot關于自動注入mapper為空的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Spring中的事務操作、注解及XML配置詳解

    Spring中的事務操作、注解及XML配置詳解

    這篇文章主要給大家介紹了關于Spring中事務操作、注解及XML配置的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • Java算法比賽常用方法實例總結

    Java算法比賽常用方法實例總結

    這篇文章主要給大家介紹了關于Java算法比賽常用方法實例總結的相關資料,文中給出了詳細的實例介紹的非常詳細,對大家學習java算法具有一定的參考學習價值,需要的朋友可以參考下
    2023-05-05
  • java生成XML的方法【附demo源碼下載】

    java生成XML的方法【附demo源碼下載】

    這篇文章主要介紹了java生成XML的方法,涉及java針對xml格式文件的簡單操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下
    2016-12-12
  • Java中的ArrayList.trimToSize()方法詳解

    Java中的ArrayList.trimToSize()方法詳解

    這篇文章主要介紹了Java中的ArrayList.trimToSize()方法詳解,前幾天看了Java?ArrayList,沒有明白trimToSize()這個方法是什么意思,所以看了一下源碼并且debug一下自己的一個例子,明白了其中的含義,需要的朋友可以參考下
    2023-11-11
  • Java SPI與Spring Boot SPI的區(qū)別實戰(zhàn)指南

    Java SPI與Spring Boot SPI的區(qū)別實戰(zhàn)指南

    本文詳細解析了JavaSPI和SpringBootSPI的區(qū)別,并通過實戰(zhàn)示例展示了如何在SpringBoot項目中使用SpringBootSPI實現(xiàn)可擴展的支付服務,本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2025-12-12
  • Java流程控制語句有哪些舉例詳解

    Java流程控制語句有哪些舉例詳解

    這篇文章主要介紹了Java流程控制語句有哪些的相關資料,包括順序執(zhí)行、分支控制(if/else、switch)及循環(huán)控制(for/while/do-while),需要的朋友可以參考下
    2025-06-06
  • SpringMVC修改返回值類型后的消息轉換器處理方式

    SpringMVC修改返回值類型后的消息轉換器處理方式

    這篇文章主要介紹了SpringMVC修改返回值類型后的消息轉換器處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java開發(fā)微信Navicat支付完整版

    Java開發(fā)微信Navicat支付完整版

    這篇文章主要介紹了Java開發(fā)微信Navicat支付完整版,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • Spring Boot 整合 Druid 并開啟監(jiān)控的操作方法

    Spring Boot 整合 Druid 并開啟監(jiān)控的操作方法

    本文介紹了如何在SpringBoot項目中引入和配置Druid數(shù)據(jù)庫連接池,并開啟其監(jiān)控功能,通過添加依賴、配置數(shù)據(jù)源、開啟監(jiān)控、自定義配置以及訪問監(jiān)控頁面,開發(fā)者可以有效提高數(shù)據(jù)庫訪問效率并監(jiān)控連接池狀態(tài),感興趣的朋友跟隨小編一起看看吧
    2025-01-01

最新評論

赫章县| 崇明县| 中卫市| 英德市| 天长市| 垦利县| 墨竹工卡县| 湘潭市| 绿春县| 武夷山市| 游戏| 孙吴县| 巨野县| 荆门市| 湘潭市| 綦江县| 双流县| 蓬安县| 辉县市| 辉南县| 新绛县| 海晏县| 资源县| 海伦市| 新闻| 镇坪县| 久治县| 成都市| 金华市| 保康县| 绥中县| 武山县| 虞城县| 嵊泗县| 高雄县| 黄山市| 策勒县| 延川县| 资兴市| 灵丘县| 邹平县|