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

SpringBoot的ConfigurationProperties或Value注解無(wú)效問題及解決

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

SpringBoot的ConfigurationProperties或Value注解無(wú)效

記錄一個(gè)問題

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

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

# 項(xiàng)目相關(guā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
{
    /** 項(xiàng)目名稱 */
    private static String name;

    public static String getName()
    {
        return name;
    }

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

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

但是,當(dāng)我們照貓畫虎的創(chuàng)建了一個(gè)靜態(tài)類后,卻發(fā)現(xiàn)我們?nèi)〉闹凳冀K為null。

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

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

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

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

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

	/** 項(xiàng)目名稱 */
    private static String name;

	public static String getName()
    {
        return name;
    }

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

而Spring在注入這些屬性時(shí),反射的Set方法不會(huì)對(duì)static方法起作用。

所以導(dǎo)致了我們的set方法沒有被調(diào)用。

解決方法

去掉Set方法的static

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot關(guān)于自動(dòng)注入mapper為空的坑及解決

    SpringBoot關(guān)于自動(dòng)注入mapper為空的坑及解決

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

    Spring中的事務(wù)操作、注解及XML配置詳解

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

    Java算法比賽常用方法實(shí)例總結(jié)

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

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

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

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

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

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

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

    Java流程控制語(yǔ)句有哪些舉例詳解

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

    SpringMVC修改返回值類型后的消息轉(zhuǎn)換器處理方式

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

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

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

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

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

最新評(píng)論

龙江县| 五原县| 上思县| 普定县| 息烽县| 临汾市| 益阳市| 苍山县| 连城县| 阿巴嘎旗| 云和县| 吉木乃县| 辛集市| 会泽县| 定兴县| 毕节市| 元谋县| 云林县| 商河县| 耒阳市| 乌什县| 沛县| 泰宁县| 卢氏县| 城步| 临颍县| 阜阳市| 涟源市| 碌曲县| 定州市| 新竹市| 蚌埠市| 肃南| 香港 | 泰顺县| 龙游县| 庆安县| 临城县| 永靖县| 比如县| 泾阳县|