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

Spring中@Value注解獲取不到配置值問題及解決

 更新時(shí)間:2023年09月21日 10:11:31   作者:已被格式化的叔叔  
這篇文章主要介紹了Spring中@Value注解獲取不到配置值問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@Value注解必須要在spring的bean中才能使用,不能自己new一個(gè)對(duì)象調(diào)用

產(chǎn)生原因:

在SpringBoot中使用@Value只能給普通變量賦值,不能給靜態(tài)變量賦值

解決方法:

給靜態(tài)變量增加一個(gè)非靜態(tài)的set方法,注意需要把@Value注解寫到對(duì)應(yīng)的set方法上,而不是定義的靜態(tài)變量上,

如下所示:

@Value("${authox.sql.url}")
public void setUrl(String url) {
    JdbcUtils.url = url;
}
@Value("${authox.sql.username}")
public void setUser(String user) {
    JdbcUtils.user = user;
}
@Value("${authox.sql.password}")
public void setPassword(String password) {
    JdbcUtils.password = password;
}
@Value("${authox.sql.driver-class-name}")
public void setDriver(String driver) {
    JdbcUtils.driver = driver;
}

1、碰到過三種情況導(dǎo)致@Value獲取不到配置值

  • 變量被關(guān)鍵字static修飾
  • 類沒有使用@Component及其衍生標(biāo)簽修飾
  • 在Bean初始化時(shí)構(gòu)造方法中引用被@Value修飾的變量

需要獲取的配置如下

kafka:
  bootstrap:
      servers: 192.168.202.131:9092
  servers:
      first:
          topic: "first_topic"
          group: "first_group"

 

測(cè)試項(xiàng)目是springboot的,如果是普通spring項(xiàng)目的application.properties文件也是類似

2、變量被關(guān)鍵字static修飾

package com.coline.codeskills.kafka;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
 * @author: Coline
 * @ClassName: TestValue
 * @Date: 2020/3/1 23:58
 * @Description: test @Value Tag
 */
@Component
public class TestValue implements InitializingBean {
    @Value("${kafka.bootstrap.servers}")
    private String kafkaServers;
    @Value("${kafka.servers.first.topic}")
    private static String topic;
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println(kafkaServers);
        System.out.println(topic);
    }
}

可以看到被static修飾的參數(shù)使用@Value無法獲取到配置值

3、類沒有使用@Component及其衍生標(biāo)簽修飾

因?yàn)锧Value是在AbstractAutowireCapableBeanFactory類的doCreateBean方法中進(jìn)行初始化,

即交由Spring容器進(jìn)行處理,

如果沒有@Component及其衍生注解注釋Spring無法識(shí)別,導(dǎo)致無法獲取到配置值。

4、在Bean初始化時(shí)構(gòu)造方法中引用被@Value修飾的變量

package com.coline.codeskills.kafka;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
 * @author: Coline
 * @ClassName: TestValue
 * @Date: 2020/3/1 23:58
 * @Description: test @Value Tag
 */
@Component
public class TestValue {
    @Value("${kafka.bootstrap.servers}")
    private String kafkaServers;
    @Value("${kafka.servers.first.topic}")
    private static String topic;
    public TestValue(){
        System.out.println(kafkaServers);
    }
}

如圖,bean初始化時(shí)在構(gòu)造方法中無法獲取到@Value修飾的參數(shù)值

解決方法:

如果需要在bean初始化時(shí)獲取參數(shù)值,那么我們可以使用@Config注解在bean初始化時(shí)獲取到,

代碼如下:

package com.coline.codeskills.common.config;
import com.coline.codeskills.kafka.TestValue;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
/**
 * @author: Coline
 * @ClassName: TestValueConfig
 * @Date: 2020/3/2 0:44
 * @Description: TODO
 */
@Configuration
public class TestValueConfig {
    @Value("${kafka.bootstrap.servers}")
    private String kafkaServers;
    @Primary
    @Bean
    public TestValue testValue(){
        TestValue testValue = new TestValue();
        return testValue;
    }
}

總結(jié)

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

相關(guān)文章

  • java中如何調(diào)用js

    java中如何調(diào)用js

    Nashorn是Java8中引入的一個(gè)新的JavaScript引擎,它允許在JVM上運(yùn)行JavaScript代碼,并且可以與Java代碼相互調(diào)用,Nashorn遵循JSR233規(guī)范,是一個(gè)純Java實(shí)現(xiàn)的JavaScript引擎,可以與Java程序無縫集成,提供動(dòng)態(tài)腳本執(zhí)行和靈活性
    2025-01-01
  • Java實(shí)現(xiàn)貪吃蛇游戲

    Java實(shí)現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Java關(guān)鍵字this與super詳解用法

    Java關(guān)鍵字this與super詳解用法

    這篇文章主要介紹了Java關(guān)鍵字this與super的用法,this與super是類實(shí)例化時(shí)通往Object類通道的打通者;this和super在程序中由于其經(jīng)常被隱式的使用而被我們忽略,但是理解其作用和使用規(guī)范肯定是必須的。接下來將詳述this與super各自的的作用,需要的朋友可以參考一下
    2022-04-04
  • Java線程通訊的實(shí)現(xiàn)方法總結(jié)

    Java線程通訊的實(shí)現(xiàn)方法總結(jié)

    線程通訊指的是多個(gè)線程之間通過共享內(nèi)存或消息傳遞等方式來協(xié)調(diào)和同步它們的執(zhí)行,線程通訊的實(shí)現(xiàn)方式主要有以下兩種:共享內(nèi)存和消息傳遞,本文詳細(xì)介紹了Java線程是如何通訊的,感興趣的同學(xué)可以參考閱讀
    2023-05-05
  • java 與testng利用XML做數(shù)據(jù)源的數(shù)據(jù)驅(qū)動(dòng)示例詳解

    java 與testng利用XML做數(shù)據(jù)源的數(shù)據(jù)驅(qū)動(dòng)示例詳解

    這篇文章主要介紹了java 與testng利用XML做數(shù)據(jù)源的數(shù)據(jù)驅(qū)動(dòng)示例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • SpringBoot中多環(huán)境啟動(dòng)配置的教程詳解

    SpringBoot中多環(huán)境啟動(dòng)配置的教程詳解

    在SpringBoot項(xiàng)目的生命周期中,存在不同的環(huán)境,我們就需要針對(duì)不同環(huán)境制定不同名稱的配置文件,里面放置不同環(huán)境下所需的配置項(xiàng),下面小編就來和大家詳細(xì)講講SpringBoot如何進(jìn)行多環(huán)境啟動(dòng)配置的吧
    2024-02-02
  • Java中類的定義和初始化示例詳解

    Java中類的定義和初始化示例詳解

    這篇文章主要給大家介紹了關(guān)于Java中類的定義和初始化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • RabbitMQ 的消息持久化與 Spring AMQP 的實(shí)現(xiàn)詳解

    RabbitMQ 的消息持久化與 Spring AMQP 的實(shí)現(xiàn)詳解

    這篇文章主要介紹了RabbitMQ 的消息持久化與 Spring AMQP 的實(shí)現(xiàn)剖析詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Java synchronized的鎖升級(jí)過程詳解

    Java synchronized的鎖升級(jí)過程詳解

    在 JDK 1.6之前,synchronized 是一個(gè)重量級(jí)、效率比較低下的鎖,但是在JDK 1.6后,JVM 為了提高鎖的獲取與釋放效,,對(duì) synchronized 進(jìn)行了優(yōu)化,所以本文給大家介紹了synchronized的鎖升級(jí)過程,需要的朋友可以參考下
    2024-04-04
  • 在Intellij Idea中使用jstl標(biāo)簽庫的方法

    在Intellij Idea中使用jstl標(biāo)簽庫的方法

    這篇文章主要介紹了在Intellij Idea中使用jstl標(biāo)簽庫的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05

最新評(píng)論

长治县| 靖西县| 龙里县| 邯郸县| 萝北县| 绥阳县| 洪泽县| 惠安县| 聂荣县| 堆龙德庆县| 新郑市| 曲水县| 噶尔县| 谢通门县| 和龙市| 柘城县| 乃东县| 湾仔区| 盐津县| 年辖:市辖区| 肃南| 新兴县| 大石桥市| 枣强县| 宾阳县| 酉阳| 徐闻县| 金阳县| 阿拉善盟| 九江市| 宿松县| 香河县| 兰州市| 镇原县| 德庆县| 神农架林区| 梁山县| 舞阳县| 华坪县| 菏泽市| 柳林县|