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

Springboot中@Value注解的場(chǎng)景用法及可能遇到的問(wèn)題詳解

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

前言

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

@Value(“#{}”) 表示SpEl表達(dá)式通常用來(lái)獲取bean的屬性,或者調(diào)用bean的某個(gè)方法。當(dāng)然還有可以直接表示常量。

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

1 非配置文件注入

1.1 用法

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

  • 注入普通字符串
  • 注入操作系統(tǒng)屬性
  • 注入表達(dá)式結(jié)果
  • 注入其他Bean屬性
  • 注入beanInject對(duì)象的屬性another
  • 注入文件資源
  • 注入U(xiǎn)RL資源

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

1.2 示例

注入普通字符串

直接附在屬性名上,在 Bean 初始化時(shí),會(huì)賦初始值。

@Value("admin")
private String name;

注入系統(tǒng)屬性

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

注入其他bean的屬性

注入U(xiǎn)ser對(duì)象中的屬性u(píng)serName

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

注入文件資源

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

注入U(xiǎn)RL資源

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

2 配置文件注入(重點(diǎn))

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

1.注入普通字符串

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

userName=zhaoyp

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

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

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

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

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

我們可以通過(guò)@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.注入數(shù)組、List類型

假設(shè)配置文件如下:

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

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

3 @Value注解獲取不到值的常見(jiàn)問(wèn)題

1 使用static或者final修飾了tagValue

錯(cuò)誤示范如下:

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

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

解決辦法是移除static或final關(guān)鍵字。 

2 使用該注解的類上面沒(méi)有加注解

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

錯(cuò)誤示范如下:

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

正確案例:

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

3 使用new關(guān)鍵字新建了實(shí)例,而沒(méi)有使用@Autowired

錯(cuò)誤用法以及正確案例如下 

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

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

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

總結(jié)

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

相關(guān)文章

最新評(píng)論

灵丘县| 和静县| 龙胜| 旬邑县| 汝阳县| 湘阴县| 麟游县| 京山县| 延边| 锦屏县| 喀喇沁旗| 甘孜| 新丰县| 拉孜县| 长岛县| 得荣县| 五家渠市| 吉木乃县| 辰溪县| 黎平县| 吴堡县| 定西市| 平邑县| 宜昌市| 志丹县| 衡水市| 沿河| 东兴市| 汕尾市| 濮阳市| 曲靖市| 忻城县| 永川市| 遂川县| 教育| 兰西县| 双江| 白沙| 崇阳县| 泰来县| 汝阳县|