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

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

 更新時(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注解無效

記錄一個(gè)問題

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

普遍的做法是利用@Component和@ConfigurationProperties(prefix = “XXX”)這兩個(gè)注解來幫我們實(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日志框架之Log4j2快速入門與參數(shù)詳解

    SpringBoot日志框架之Log4j2快速入門與參數(shù)詳解

    本文介紹了SpringBoot日志框架log4j2的基本使用和配置方法,包括將日志輸出到控制臺(tái)、文件、Elasticsearch和Kafka,多個(gè)輸出目的地的配置,異步日志記錄器的使用以及l(fā)og4j2.xml配置文件的詳細(xì)語(yǔ)法和參數(shù)含義,需要的朋友可以參考下
    2023-05-05
  • Java多線程中的Phaser詳解

    Java多線程中的Phaser詳解

    這篇文章主要介紹了Java多線程中的Phaser詳解,Pahser是一個(gè)可以重復(fù)使用的同步屏障,Phaser是按照不同階段執(zhí)行線程的,它本身維護(hù)著一個(gè)叫 phase 的成員變量代表當(dāng)前執(zhí)行的階段,需要的朋友可以參考下
    2023-11-11
  • java怎樣動(dòng)態(tài)獲取泛型參數(shù)的類型

    java怎樣動(dòng)態(tài)獲取泛型參數(shù)的類型

    在Java中,泛型信息在編譯時(shí)會(huì)被擦除,但可以通過特定API獲取運(yùn)行時(shí)的泛型參數(shù)類型,主要API包括Class的getGenericSuperclass()和getGenericInterfaces()方法,以及ParameterizedType的getActualTypeArguments()方法
    2024-09-09
  • SpringBoot前后端分離實(shí)現(xiàn)驗(yàn)證碼操作

    SpringBoot前后端分離實(shí)現(xiàn)驗(yàn)證碼操作

    驗(yàn)證碼的功能是防止非法用戶惡意去訪問登錄接口而設(shè)置的一個(gè)功能,今天我們就來看看在前后端分離的項(xiàng)目中,SpringBoot是如何提供服務(wù)的
    2022-05-05
  • Java ArrayList的底層實(shí)現(xiàn)方法

    Java ArrayList的底層實(shí)現(xiàn)方法

    今天小編就為大家分享一篇Java ArrayList的底層實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 使用log4j2關(guān)閉debug日志

    使用log4j2關(guān)閉debug日志

    這篇文章主要介紹了使用log4j2關(guān)閉debug日志方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java原碼補(bǔ)碼反碼關(guān)系解析

    java原碼補(bǔ)碼反碼關(guān)系解析

    這篇文章主要為大家詳細(xì)介紹了java原碼補(bǔ)碼反碼的關(guān)系,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • MyBatis配置與CRUD超詳細(xì)講解

    MyBatis配置與CRUD超詳細(xì)講解

    這篇文章主要介紹了MyBatis配置與CRUD,CRUD是指在做計(jì)算處理時(shí)的增加(Create)、讀取(Read)、更新(Update)和刪除(Delete)幾個(gè)單詞的首字母簡(jiǎn)寫。CRUD主要被用在描述軟件系統(tǒng)中數(shù)據(jù)庫(kù)或者持久層的基本操作功能
    2023-02-02
  • 解決idea出現(xiàn)的java.lang.OutOfMemoryError:?Java?heap?space的問題

    解決idea出現(xiàn)的java.lang.OutOfMemoryError:?Java?heap?space的問題

    我們?cè)谑褂胕dea的時(shí)候經(jīng)常會(huì)遇到一些問題,本文介紹了如何解決idea出現(xiàn)的java.lang.OutOfMemoryError:?Java?heap?space的問題,文中有相關(guān)的圖文示例,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • java定時(shí)任務(wù)的實(shí)現(xiàn)方法

    java定時(shí)任務(wù)的實(shí)現(xiàn)方法

    java定時(shí)任務(wù)的實(shí)現(xiàn)方法,需要的朋友可以參考一下
    2013-03-03

最新評(píng)論