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

Springboot中@Value注解的場景用法及可能遇到的問題詳解

 更新時間:2023年11月10日 08:30:47   作者:NJUPT_zhaoyp  
這篇文章主要給大家介紹了關于Springboot中@Value注解的場景用法及可能遇到問題的相關資料, @Value通常用于注入外部化屬性,即外部配置屬性的注入,文中通過圖文介紹的非常詳細,需要的朋友可以參考下

前言

@Value注解可以通過#{}和${}等2中方式使用,其作用通常如下:

@Value(“#{}”) 表示SpEl表達式通常用來獲取bean的屬性,或者調用bean的某個方法。當然還有可以直接表示常量。

用@Value(“${}”)注解一般從配置文件讀取屬性。

1 非配置文件注入

1.1 用法

通過@Value將外部的值動態(tài)注入到Bean中,常見用法如下:

  • 注入普通字符串
  • 注入操作系統(tǒng)屬性
  • 注入表達式結果
  • 注入其他Bean屬性
  • 注入beanInject對象的屬性another
  • 注入文件資源
  • 注入URL資源

非配置文件注入在實際開發(fā)場景中使用的較少,@value大部分情況注入配置文件中的屬性

1.2 示例

注入普通字符串

直接附在屬性名上,在 Bean 初始化時,會賦初始值。

@Value("admin")
private String name;

注入系統(tǒng)屬性

@Value("#{systemProperties['os.name']}")
private String osName;

注入其他bean的屬性

注入User對象中的屬性userName

@Value("#{User.userName}")
private String userName;

注入文件資源

@Value("classpath:com/ndtest/spring/configinject/config.txt")
private Resource resourceFile;

注入URL資源

@Value("http://www.baidu.com")
private Resource testUrl;

2 配置文件注入(重點)

SpringBoot 通過 @Value 注解將配置文件中的屬性注入到容器內組件中(可用在 @Controller 、@Service 、@Configuration、@Component 等Spring托管的類中)

1.注入普通字符串

在 application.properties 配置文件中有如下配置:

userName=zhaoyp

我們可以使用@Value注解注入屬性:

@Value("${userName}")
public String userName;

2.注入基本類型(最常使用)

這次我們使用yml文件作為配置文件,假設application.yml文件中定義了服務器的基本配置

client:
  ipAddr: 222.95.84.124
  sshPort: 22
  sshUser: root
  sshPass: Test!@#123

我們可以通過@Value注解注入屬性

    @Value("${client.ipAddr}")
    private String ipAddr;

    @Value("${client.sshPort}")
    private Integer sshPort;

    @Value("${client.sshUser}")
    private String sshUser;

    @Value("${client.sshPass}")
    private String sshPass;

3.注入數組、List類型

假設配置文件如下:

ids=1,2,3
// 注入數組類型
@Value("${ids}")
public int[] arrIds;

// 注入List
@Value("#{'${ids}'.split(',')}")
public List<String> listIds;

3 @Value注解獲取不到值的常見問題

1 使用static或者final修飾了tagValue

錯誤示范如下:

@Value("${ftpIP}")
private static String ftpIP; 

@Value("${ftpUserName}")
private final String ftpUserName;

解決辦法是移除static或final關鍵字。 

2 使用該注解的類上面沒有加注解

沒有加注解即不能被spring管理(類沒有加上@Component(或者@service等))

錯誤示范如下:

public class FTPManagerService { 
 @Value("${ftpIP}")
 private static String ftpIP; 
}

正確案例:

@Component // 檢查注解是否遺漏
public class FTPManagerService { 
 @Value("${ftpIP}")
 private static String ftpIP; 
}

3 使用new關鍵字新建了實例,而沒有使用@Autowired

錯誤用法以及正確案例如下 

public class FTPManagerService { 
 @Value("${ftpIP}")
 private static String ftpIP; 
} 

public class Test{
    /*錯誤用法*/
    FTPManagerService  f = new FTPManagerService ();
 
    /*正確用法*/
    @Autowired
    FTPManagerService  f2;
}

以上便是@Value注解的使用方法以及踩坑案例,希望能幫到大家~

總結

到此這篇關于Springboot中@Value注解的場景用法及可能遇到的問題的文章就介紹到這了,更多相關Springboot @Value注解場景用法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java如何配置IDEA自定義注釋

    Java如何配置IDEA自定義注釋

    在IDEA中設置自動創(chuàng)建類和方法的注釋可以提高編碼效率,確保代碼的一致性和可讀性,首先,對于創(chuàng)建類的注釋,可以通過修改File→Settings→File and Code Templates→Class的模板來實現(xiàn),其次,對于方法注釋
    2024-10-10
  • 深入解析Java中的編碼轉換以及編碼和解碼操作

    深入解析Java中的編碼轉換以及編碼和解碼操作

    這篇文章主要介紹了Java中的編碼轉換以及編碼和解碼操作,文中詳細解讀了編碼解碼的相關IO操作以及內存使用方面的知識,需要的朋友可以參考下
    2016-02-02
  • 基于JSON和java對象的互轉方法

    基于JSON和java對象的互轉方法

    下面小編就為大家?guī)硪黄贘SON和java對象的互轉方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • java FastJson的簡單用法

    java FastJson的簡單用法

    FastJson是阿里的開源JSON解析庫,可以解析JSON格式的字符串,支持將Java Bean序列化為JSON字符串,也可以從JSON字符串反序列化到JavaBean,這里我介紹一下FastJson的使用,感興趣的朋友一起看看吧
    2021-09-09
  • Spring注解@Import原理解析

    Spring注解@Import原理解析

    這篇文章主要為大家介紹了Spring注解@Import原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Java實現(xiàn)導出Word文檔的示例代碼

    Java實現(xiàn)導出Word文檔的示例代碼

    poi-tl是一個基于Apache POI的Word模板引擎,也是一個免費開源的Java類庫,你可以非常方便的加入到你的項目中。本文就利用它實現(xiàn)導出Word文檔功能,需要的可以參考一下
    2023-02-02
  • 淺談Spring5 響應式編程

    淺談Spring5 響應式編程

    本篇文章主要介紹了淺談Spring5 響應式編程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • 詳解JavaScript中的函數聲明和函數表達式

    詳解JavaScript中的函數聲明和函數表達式

    這篇文章主要介紹了詳解JavaScript中的函數聲明和函數表達式,是JS入門學習中的基礎知識,需要的朋友可以參考下
    2015-08-08
  • 啟動Tomcat報錯Unsupported major.minor version xxx的解決方法

    啟動Tomcat報錯Unsupported major.minor version xxx的解決方法

    這篇文章主要為大家詳細介紹了啟動Tomcat報錯Unsupported major.minor version xxx的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 淺談Java程序運行機制及錯誤分析

    淺談Java程序運行機制及錯誤分析

    這篇文章主要主要介紹了Java虛擬機(JVM)的有關內容以及Java程序的運行機制和錯誤分析,需要的朋友可以了解下。
    2017-09-09

最新評論