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

SpringBoot實現(xiàn)給屬性賦值的兩種方式

 更新時間:2024年07月24日 09:26:03   作者:Xwzzz_  
在Spring Boot中,配置文件是用來設(shè)置應(yīng)用程序的各種參數(shù)和操作模式的重要部分,Spring Boot支持兩種主要類型的配置文件:properties文件和YAML 文件,這兩種文件都可以用來定義相同的配置,接下來由小編給大家詳細的介紹一下這兩種方式

一,介紹

在Spring Boot中,配置文件是用來設(shè)置應(yīng)用程序的各種參數(shù)和操作模式的重要部分。Spring Boot支持兩種主要類型的配置文件:properties文件和YAML 文件。這兩種文件都可以用來定義相同的配置,但它們在格式和表達能力上有所不同。

二,Properties 配置方式

properties文件是Java平臺最傳統(tǒng)的配置方式,文件擴展名為 .properties。這種格式非常簡單,主要由鍵值對組成,每一對鍵值對設(shè)置一個配置屬性。

示例:

定義模型Person類:

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
 
@Component
@ConfigurationProperties(prefix="person")
public class Person {
    private String name;
    private int age;
    private String uuid;
    private Dog dog;
 
    // standard getters and setters
 
    public static class Dog {
        private String name;
        private String breed;
 
        // standard getters and setters
    }
}

Properties 配置

person.name=John Doe
person.age=35
person.uuid=${random.uuid}
person.dog.name=Rex
person.dog.breed=Labrador

這樣配置后,Spring Boot 會自動application.properties中的相關(guān)配置注入到 Person對象和其內(nèi)部的 Dog對象。

使用 @Value注解也可以直接在 Spring Boot 應(yīng)用中注入配置值,例

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
 
@Component
public class Person {
    @Value("${person.name}")
    private String name;
 
    @Value("${person.age}")
    private int age;
 
    @Value("${person.uuid}")
    private String uuid;
 
    // 內(nèi)部類和其他配置略
}

三,YAML 配置方式

YAML 是一種層次結(jié)構(gòu)化的數(shù)據(jù)格式,相比于 properties文件,它支持列表和嵌套的對象,使得配置更加清晰和組織化。

yaml配置:

person:
  name: "John Doe"
  age: 35
  uuid: ${random.uuid}
  dog:
    name: "Rex"
    breed: "Labrador"

這時要將YAML文件中的配置自動映射到一個Java類中,需要在Spring Boot應(yīng)用中定義相應(yīng)的配置類,并使用@ConfigurationProperties注解。

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
 
@Configuration
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private int age;
    private String uuid;
    private Dog dog;
 
 
    @Component
    public static class Dog {
        private String name;
        private String breed;
 
        // getters and setters
        public String getName() {
            return name;
        }
 
        public void setName(String name) {
            this.name = name;
        }
 
        public String getBreed() {
            return breed;
        }
 
        public void setBreed(String breed) {
            this.breed = breed;
        }
    }
}

四,對比

1. 可讀性

  • YAML 由于其支持層級結(jié)構(gòu),通常在表達更復(fù)雜的配置時更加清晰和易讀。
  • Properties 文件更適合簡單的平面鍵值對,但在需要表達嵌套配置時可讀性較差。

2. 表達能力

  • YAML 支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如列表和字典(即嵌套的對象),這使得它在表達如安全規(guī)則、路由配置等復(fù)雜配置時非常有用。
  • Properties 文件不支持直接的層級或復(fù)雜結(jié)構(gòu),所有結(jié)構(gòu)都必須通過點分隔的方式平鋪開來表達。

3. 錯誤檢測

  • YAML 文件由于格式更加復(fù)雜,對縮進非常敏感,錯誤的縮進可能導(dǎo)致整個文件無法解析。
  • Properties 文件結(jié)構(gòu)簡單,縮進和格式錯誤的容忍度較高。

4. 使用場景

  • 如果配置較為簡單,或是遷移遺留項目而不希望引入新的復(fù)雜性,那么使用.properties可能更合適。
  • 對于新項目或需要表達復(fù)雜配置的情況,.yaml提供了更強的表達能力和更好的可讀性。

以上就是SpringBoot實現(xiàn)給屬性賦值的兩種方式的詳細內(nèi)容,更多關(guān)于SpringBoot給屬性賦值的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • LeetCode程序員面試題之遞歸乘法

    LeetCode程序員面試題之遞歸乘法

    在Java中,遞歸乘法是一種簡單而有效的方法,可以用來計算兩個數(shù)字的乘積。它的基本思想是:如果第一個數(shù)字是0,則乘積為0;如果第一個數(shù)字是1,則乘積為第二個數(shù)字;其他情況,則通過將第一個數(shù)字減1,并將第二個數(shù)字與自身相乘,來實現(xiàn)遞歸乘法。
    2023-02-02
  • MyBatis別名和settings設(shè)置方式

    MyBatis別名和settings設(shè)置方式

    這篇文章主要介紹了MyBatis別名和settings設(shè)置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java 出現(xiàn)問題javax.servlet.http.HttpServlet was not found解決方法

    java 出現(xiàn)問題javax.servlet.http.HttpServlet was not found解決方法

    這篇文章主要介紹了java 出現(xiàn)問題javax.servlet.http.HttpServlet was not found解決方法的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • springboot整合kaptcha生成驗證碼功能

    springboot整合kaptcha生成驗證碼功能

    這篇文章主要介紹了springboot整合kaptcha生成驗證碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Java?list移除元素相關(guān)操作指南

    Java?list移除元素相關(guān)操作指南

    這篇文章主要給大家介紹了關(guān)于Java?list移除元素相關(guān)操作的相關(guān)資料,文中介紹的方法包括增強for循環(huán)、迭代器、Stream流和removeIf()方法,同時還介紹了如何從一個列表中刪除包含另一個列表元素的方法,以及如何刪除指定下標(biāo)位置的元素,需要的朋友可以參考下
    2024-12-12
  • java中Lamda表達式講解

    java中Lamda表達式講解

    本文詳細講解了java中的Lamda表達式,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • Java實現(xiàn)設(shè)計模式之責(zé)任鏈模式

    Java實現(xiàn)設(shè)計模式之責(zé)任鏈模式

    責(zé)任鏈模式是一種行為設(shè)計模式,允許你將請求沿著處理鏈發(fā)送,然后處理者都可對其進行處理,完成后可以再將其傳遞給下一個處理者。下面將會舉例說明什么是責(zé)任鏈模式,責(zé)任鏈模式該如何使用
    2022-08-08
  • Java實現(xiàn)單詞倒序輸出

    Java實現(xiàn)單詞倒序輸出

    這篇文章主要介紹了Java實現(xiàn)單詞倒序輸出,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-08-08
  • 使用SpringCloudAlibaba整合Dubbo

    使用SpringCloudAlibaba整合Dubbo

    這篇文章主要介紹了使用SpringCloudAlibaba整合Dubbo,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • MySQL安裝與idea的連接實現(xiàn)

    MySQL安裝與idea的連接實現(xiàn)

    本文主要介紹了MySQL安裝與idea的連接實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論