亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring?Boot?中?@Value注解的使用示例詳解

 更新時(shí)間:2025年05月16日 09:55:32   作者:wdwc2  
@Value是Spring提供的一個(gè)注解,用于從配置文件或其他來(lái)源(如系統(tǒng)環(huán)境變量、SpEL表達(dá)式)中讀取值并注入到Bean的字段或方法參數(shù)中,這篇文章主要介紹了SpringBoot中@Value注解的使用,需要的朋友可以參考下

一、前言

在 Spring Boot 項(xiàng)目中通常需要從 application.propertiesapplication.yml 配置文件中讀取配置信息。@Value 注解提供了一種簡(jiǎn)單的方式來(lái)將配置值注入到 Spring 組件中。

二、@Value 注解簡(jiǎn)介

@Value 是 Spring 提供的一個(gè)注解,用于從配置文件或其他來(lái)源(如系統(tǒng)環(huán)境變量、SpEL 表達(dá)式)中讀取值并注入到 Bean 的字段或方法參數(shù)中。其基本語(yǔ)法如下:

@Value("${property.key}")
private String propertyValue;

三、@Value 注解的常見(jiàn)用法

1. 讀取 application.properties 或 application.yml 配置值

(1)配置文件示例

application.properties

app.name=Spring Boot Demo
app.version=1.0.0

application.yml

app:
  name: Spring Boot Demo
  version: 1.0.0

(2)Java 代碼示例

@Component
public class AppConfig {
    @Value("${app.name}")
    private String appName;
    @Value("${app.version}")
    private String appVersion;
    public void printConfig() {
        System.out.println("Application Name: " + appName);
        System.out.println("Application Version: " + appVersion);
    }
}

(3)測(cè)試輸出

Application Name: Spring Boot Demo

Application Version: 1.0.0

2. 使用 @Value 設(shè)置默認(rèn)值

如果配置文件中未定義某個(gè)屬性,則 @Value 注解可以提供一個(gè)默認(rèn)值。默認(rèn)值的語(yǔ)法是 :${defaultValue}

@Component
public class DefaultValueExample {
    @Value("${app.author:Unknown Author}")
    private String author;
    public void printAuthor() {
        System.out.println("Application Author: " + author);
    }
}

如果 application.propertiesapplication.yml 中未配置 app.author,則輸出:

Application Author: Unknown Author

3. 讀取系統(tǒng)環(huán)境變量和 Java 運(yùn)行時(shí)參數(shù)

@Value 也可以用于讀取系統(tǒng)環(huán)境變量或 -D 方式傳遞的 JVM 運(yùn)行參數(shù):

@Component
public class EnvConfig {
    @Value("${JAVA_HOME}")
    private String javaHome;
    @Value("${user.name}")
    private String userName;
    public void printSystemProperties() {
        System.out.println("JAVA_HOME: " + javaHome);
        System.out.println("User Name: " + userName);
    }
}

如果運(yùn)行環(huán)境變量設(shè)置了 JAVA_HOME=/usr/lib/jvm/java-11-openjdk,則輸出:

JAVA_HOME: /usr/lib/jvm/java-11-openjdk
User Name: admin

4. 結(jié)合 Spring Expression Language (SpEL)

@Value 注解支持 Spring 表達(dá)式語(yǔ)言(SpEL),可用于動(dòng)態(tài)計(jì)算值。

(1)基本 SpEL 表達(dá)式

@Component
public class SpELExample {
    @Value("#{2 * 5}")
    private int result;
    public void printResult() {
        System.out.println("Result: " + result);
    }
}

輸出:

Result: 10

(2)引用 Bean 的屬性

@Component
public class AnotherBean {
    private String message = "Hello from AnotherBean";
    public String getMessage() {
        return message;
    }
}
@Component
public class BeanReferenceExample {
    @Autowired
    private AnotherBean anotherBean;
    @Value("#{anotherBean.message}")
    private String messageFromAnotherBean;
    public void printMessage() {
        System.out.println(messageFromAnotherBean);
    }
}

輸出:

Hello from AnotherBean

5. 讀取數(shù)組、集合和 Map 類型數(shù)據(jù)

(1)讀取數(shù)組

app.servers=192.168.1.1,192.168.1.2,192.168.1.3
@Component
public class ArrayConfig {
    @Value("${app.servers}")
    private String[] servers;
    public void printServers() {
        System.out.println(Arrays.toString(servers));
    }
}

輸出:

[192.168.1.1, 192.168.1.2, 192.168.1.3]

(2)讀取 List

@Component
public class ListConfig {
    @Value("#{'${app.servers}'.split(',')}")
    private List<String> serverList;
    public void printServerList() {
        System.out.println(serverList);
    }
}

輸出:

[192.168.1.1, 192.168.1.2, 192.168.1.3]

(3)讀取 Map

app.db.config=username:admin,password:123456,url:jdbc:mysql://localhost:3306/test
@Component
public class MapConfig {
    @Value("#{${app.db.config}}")
    private Map<String, String> dbConfig;
    public void printDbConfig() {
        System.out.println(dbConfig);
    }
}

輸出:

{username=admin, password=123456, url=jdbc:mysql://localhost:3306/test}

四、@Value 和 @ConfigurationProperties 對(duì)比

特性@Value@ConfigurationProperties
作用范圍適用于單個(gè)值注入適用于整個(gè)配置對(duì)象映射
支持的數(shù)據(jù)類型主要用于 String、基本類型、數(shù)組可綁定復(fù)雜對(duì)象(如 List、Map、自定義對(duì)象)
代碼簡(jiǎn)潔性適用于少量配置參數(shù)適用于大量配置參數(shù)
是否支持 SpEL支持不支持

示例:@ConfigurationProperties 用法

app.name=Spring Boot Demo
app.version=1.0.0
@Configuration
@ConfigurationProperties(prefix = "app")
public class AppProperties {
    private String name;
    private String version;
    // getter & setter
}

五、總結(jié)

  • @Value 注解用于將配置文件中的值注入到 Spring 組件中。
  • @Value 可用于讀取 application.properties 或 application.yml 中的值,并支持默認(rèn)值。
  • @Value 還能用于讀取環(huán)境變量、JVM 運(yùn)行參數(shù)和 SpEL 表達(dá)式。
  • @Value 可以解析數(shù)組、List、Map 等數(shù)據(jù)結(jié)構(gòu)。
  • 對(duì)于復(fù)雜配置推薦使用 @ConfigurationProperties,而 @Value 適用于簡(jiǎn)單值注入。

到此這篇關(guān)于Spring Boot 中 @Value注解的使用示例詳解的文章就介紹到這了,更多相關(guān)Spring Boot @Value注解使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot中通過(guò)AOP整合日志文件的實(shí)現(xiàn)

    SpringBoot中通過(guò)AOP整合日志文件的實(shí)現(xiàn)

    本文主要介紹了SpringBoot中通過(guò)AOP整合日志文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Spring自動(dòng)注入失敗的解決方法

    Spring自動(dòng)注入失敗的解決方法

    這篇文章主要介紹了Spring自動(dòng)注入失敗的解決方法,幫助大家更好的理解和學(xué)習(xí)使用Spring框架,感興趣的朋友可以了解下
    2021-05-05
  • 使用java實(shí)現(xiàn)百萬(wàn)級(jí)別數(shù)據(jù)導(dǎo)出excel的三種方式

    使用java實(shí)現(xiàn)百萬(wàn)級(jí)別數(shù)據(jù)導(dǎo)出excel的三種方式

    這篇文章主要介紹了使用java實(shí)現(xiàn)百萬(wàn)級(jí)別數(shù)據(jù)導(dǎo)出excel的三種方式,有些業(yè)務(wù)系統(tǒng)可能動(dòng)輒涉及到百萬(wàn)上千萬(wàn)的數(shù)據(jù),用正常的方法效率就變得很低,今天我們來(lái)看看這幾種實(shí)現(xiàn)思路
    2023-03-03
  • 詳解Java如何判斷一個(gè)對(duì)象是否為空

    詳解Java如何判斷一個(gè)對(duì)象是否為空

    我們?cè)趧傞_(kāi)始學(xué)習(xí)Java的時(shí)候,遇到過(guò)最多的異??隙ㄊ浅裘阎目罩羔槷惓#∟ullPointerException),可以說(shuō)它陪伴了我們整個(gè)初學(xué)階段,那么如何優(yōu)雅的判斷一個(gè)對(duì)象是否為空并且減少空指針異常呢,
    2024-01-01
  • 淺談Java三目運(yùn)算

    淺談Java三目運(yùn)算

    本文給大家主要介紹的是java中三目運(yùn)算的詳細(xì)介紹,并附上2個(gè)示例,希望對(duì)大家理解三目運(yùn)算能夠有所幫助。
    2015-03-03
  • Spring Boot 整合 JWT的方法

    Spring Boot 整合 JWT的方法

    這篇文章主要介紹了Spring Boot 整合 JWT的方法,文中實(shí)例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Java編程GUI中的事件綁定代碼示例

    Java編程GUI中的事件綁定代碼示例

    這篇文章主要介紹了Java編程GUI中的事件綁定代碼示例,簡(jiǎn)單介紹了綁定的概念,然后分享了相關(guān)代碼,具有一定參考價(jià)值,需要的朋友可以參考下。
    2017-10-10
  • Java某個(gè)經(jīng)緯度是否在genjson文件中問(wèn)題

    Java某個(gè)經(jīng)緯度是否在genjson文件中問(wèn)題

    GeoJSON是一種用于地理空間信息數(shù)據(jù)交換的格式,基于JSON,要判斷某個(gè)經(jīng)緯度是否在某個(gè)區(qū)域內(nèi),首先需要解析GeoJSON文件,確定區(qū)域邊界,然后使用經(jīng)緯度進(jìn)行比較
    2024-11-11
  • springboot layui hutool Excel導(dǎo)入的實(shí)現(xiàn)

    springboot layui hutool Excel導(dǎo)入的實(shí)現(xiàn)

    本文主要介紹了springboot layui hutool Excel導(dǎo)入的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • JDBC簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    JDBC簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    什么是JDBC?這篇文章就為大家詳細(xì)介紹了Java語(yǔ)言中用來(lái)規(guī)范客戶端程序如何來(lái)訪問(wèn)數(shù)據(jù)庫(kù)的應(yīng)用程序接口,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評(píng)論