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

Spring中@PropertySource注解使用場(chǎng)景解析

 更新時(shí)間:2023年11月23日 10:35:49   作者:Super_Leng  
這篇文章主要介紹了Spring中@PropertySource注解使用場(chǎng)景解析,@PropertySource注解就是Spring中提供的一個(gè)可以加載配置文件的注解,并且可以將配置文件中的內(nèi)容存放到Spring的環(huán)境變量中,需要的朋友可以參考下

一、簡(jiǎn)單介紹

在日常開(kāi)發(fā)中,你有沒(méi)有遇到過(guò)這樣一種場(chǎng)景:項(xiàng)目中需要編寫(xiě)很多配置文件,將一些系統(tǒng)信息配置化

此時(shí),往往需要編寫(xiě)專門的工具類或者方法來(lái)讀取并解析這些配置文件,將配置文件中的配置項(xiàng)內(nèi)容加載到系統(tǒng)內(nèi)存中。

后續(xù)在使用這些配置項(xiàng)時(shí),可以直接通過(guò)工具類或者方法獲取加載到內(nèi)存中的配置項(xiàng)。

@PropertySource注解就是Spring中提供的一個(gè)可以加載配置文件的注解,并且可以將配置文件中的內(nèi)容存放到Spring的環(huán)境變量中。

二、注解說(shuō)明

@PropertySource注解是Spring中提供的一個(gè)通過(guò)指定配置文件位置來(lái)加載配置文件的注解,并且可以將配置文件中的內(nèi)容存放到Spring的環(huán)境變量中。

除了可以通過(guò)Spring的環(huán)境變量讀取配置項(xiàng)之外,還可以通過(guò)@Value注解獲取配置項(xiàng)的值。

另外,Spring中還提供了一個(gè)@PropertySources注解,在@PropertySources注解中,可以引入多個(gè)@PropertySource注解。

1. 注解源碼

Spring中提供了@PropertySource和@PropertySources兩個(gè)注解來(lái)加載配置文件。

① @PropertySource注解

@PropertySource注解只能標(biāo)注到類上,能夠通過(guò)指定配置文件的位置來(lái)加載配置文件,@PropertySource注解除了可以加載properties配置文件外,也可以加載xml配置文件和yml配置文件。如果加載yml配置文件時(shí),可以自定義PropertySourceFactory實(shí)現(xiàn)yml配置文件的解析操作。

@PropertySource注解的源碼詳見(jiàn):

/**
 * @author Chris Beams
 * @author Juergen Hoeller
 * @author Phillip Webb
 * @author Sam Brannen
 * @since 3.1
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(PropertySources.class)
public @interface PropertySource {

 String name() default "";
 String[] value();
 /**
  * @since 4.0
  */
 boolean ignoreResourceNotFound() default false;
 /**
  * @since 4.3
  */
 String encoding() default "";
 /**
  * @since 4.3
  */
 Class<? extends PropertySourceFactory> factory() default PropertySourceFactory.class;
}

從源碼可以看出,@PropertySource注解是從Spring3.1版本開(kāi)始提供的注解,注解中各個(gè)屬性的含義如下所示:

  • name:表示加載的資源的名稱,如果為空,則會(huì)根據(jù)加載的配置文件自動(dòng)生成一個(gè)名稱。
  • value:表示加載的資源的路徑,這個(gè)路徑可以是類路徑,也可以是文件路徑。
  • ignoreResourceNotFound:表示當(dāng)配置文件未找到時(shí),是否忽略文件未找到的錯(cuò)誤。默認(rèn)值為false,也就是說(shuō)當(dāng)未找到配置文件時(shí),Spring啟動(dòng)就會(huì)報(bào)錯(cuò)。
  • encoding:表示解析配置文件使用的字符集編碼。
  • factory:表示讀取對(duì)應(yīng)配置文件的工廠類,默認(rèn)的工廠類是PropertySourceFactory。

② @PropertySources注解

除了@PropertySource注解,Spring中還提供了一個(gè)@PropertySources注解。

/**
 * @author Phillip Webb
 * @since 4.0
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface PropertySources {
 PropertySource[] value();
}

從源碼可以看出,@PropertySources是從Spring4.0版本開(kāi)始提供的注解,在@PropertySources注解中,只提供了一個(gè)PropertySource數(shù)組類型的value屬性。

所以,@PropertySources注解可以引入多個(gè)@PropertySource注解。

2. 注解使用場(chǎng)景

在基于Spring的注解開(kāi)發(fā)項(xiàng)目的過(guò)程中,由于不再使用Spring的XML文件進(jìn)行配置,如果將配置項(xiàng)直接寫(xiě)到類中,就會(huì)造成配置項(xiàng)與類的緊耦合,后續(xù)對(duì)于配置項(xiàng)的修改操作非常不方便,不利于項(xiàng)目的維護(hù)和擴(kuò)展。

此時(shí),可以將這些配置項(xiàng)寫(xiě)到properties文件或者yml文件中,通過(guò)@PropertySource注解加載配置文件。

另外,如果項(xiàng)目本身就存在大量的properties配置文件或者yml配置文件,也可以統(tǒng)一由Spring的@PropertySource注解進(jìn)行加載。

3. 使用案例

本節(jié),主要實(shí)現(xiàn)一個(gè)通過(guò)@PropertySource注解加載properties配置文件,將properties配置文件中的配置項(xiàng)加載到Spring的環(huán)境變量中,獲取Spring環(huán)境變量中配置項(xiàng)的值,并進(jìn)行打印。

案例的具體實(shí)現(xiàn)步驟如下所示。

(1)新增test.properties文件

resources目錄下新增test.properties文件,文件內(nèi)容如下所示:

name=lwk
age=18

(2)新增PropertySourceConfig類

@Configuration
@PropertySource(value = "classpath:test.properties")
public class PropertySourceConfig {
}

可以看到,PropertySourceConfig類是Spring的配置類,并且使用@PropertySource注解指定了test.properties配置文件的路徑。

(3)新增PropertySourceTest類

public class PropertySourceTest {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(PropertySourceConfig.class);
        ConfigurableEnvironment environment = context.getEnvironment();
        System.out.println(environment.getProperty("name") + " ====>>> " + environment.getProperty("age"));
    }
}

可以看到,在PropertySourceTest類的main()方法中,通過(guò)AnnotationConfigApplicationContext類的對(duì)象獲取到ConfigurableEnvironment類型的環(huán)境變量對(duì)象environment,然后通過(guò)environment對(duì)象獲取配置文件中的name和age的值并進(jìn)行打印。

(4)運(yùn)行PropertySourceTest類

可以看到,正確的輸出了配置文件中的值。

lwk ====>>> 18

說(shuō)明:使用@PropertySource注解可以加載properties配置文件中的配置項(xiàng),并將配置項(xiàng)加載到Spring的環(huán)境變量中,通過(guò)Spring的環(huán)境變量就可以獲取到配置項(xiàng)的值。

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

相關(guān)文章

  • IDEA的spring項(xiàng)目使用@Qualifier飄紅問(wèn)題及解決

    IDEA的spring項(xiàng)目使用@Qualifier飄紅問(wèn)題及解決

    這篇文章主要介紹了IDEA的spring項(xiàng)目使用@Qualifier飄紅問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • application.yaml與bootstrap.yaml的使用

    application.yaml與bootstrap.yaml的使用

    這篇文章主要介紹了application.yaml與bootstrap.yaml的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 詳解Java如何利用位操作符創(chuàng)建位掩碼

    詳解Java如何利用位操作符創(chuàng)建位掩碼

    在本文中,我們來(lái)看看如何使用位操作符實(shí)現(xiàn)低級(jí)別的位掩碼。我們將看到我們?nèi)绾螌⒁粋€(gè)單一的int變量作為一個(gè)單獨(dú)的數(shù)據(jù)容器,感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2022-10-10
  • idea快速找到項(xiàng)目中對(duì)應(yīng)的類圖文詳解(包括源碼)

    idea快速找到項(xiàng)目中對(duì)應(yīng)的類圖文詳解(包括源碼)

    用IDEA開(kāi)發(fā)Java項(xiàng)目時(shí)經(jīng)常會(huì)使用到各種快捷鍵,其中搜索是最常用的之一,下面這篇文章主要給大家介紹了關(guān)于idea如何快速找到項(xiàng)目中對(duì)應(yīng)的類(包括源碼)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • 基于Column注解的columnDefinition用法

    基于Column注解的columnDefinition用法

    這篇文章主要介紹了Column注解的columnDefinition用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Spring事務(wù)原理解析

    Spring事務(wù)原理解析

    Spring事務(wù)有可能會(huì)提交,回滾、掛起、恢復(fù),所以Spring事務(wù)提供了一種機(jī)制,可以讓程序員來(lái)監(jiān)聽(tīng)當(dāng)前Spring事務(wù)所處于的狀態(tài),這篇文章主要介紹了Spring底層事務(wù)原理,需要的朋友可以參考下
    2022-12-12
  • Java整合Jackson實(shí)現(xiàn)反序列化器流程

    Java整合Jackson實(shí)現(xiàn)反序列化器流程

    Jackson是一個(gè)開(kāi)源的Java序列化和反序列化工具,可以將Java對(duì)象序列化為XML或JSON格式的字符串,以及將XML或JSON格式的字符串反序列化為Java對(duì)象。由于其使用簡(jiǎn)單,速度較快,且不依靠除JDK外的其他庫(kù),被眾多用戶所使用
    2023-01-01
  • SpringBoot自定義定時(shí)任務(wù)的實(shí)現(xiàn)示例

    SpringBoot自定義定時(shí)任務(wù)的實(shí)現(xiàn)示例

    本文主要介紹了SpringBoot自定義定時(shí)任務(wù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • Spring Data Jpa實(shí)現(xiàn)分頁(yè)和排序代碼實(shí)例

    Spring Data Jpa實(shí)現(xiàn)分頁(yè)和排序代碼實(shí)例

    本篇文章主要介紹了Spring Data Jpa實(shí)現(xiàn)分頁(yè)和排序代碼實(shí)例,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-03-03
  • SpringBoot前后端分離實(shí)現(xiàn)驗(yàn)證碼操作

    SpringBoot前后端分離實(shí)現(xiàn)驗(yàn)證碼操作

    驗(yàn)證碼的功能是防止非法用戶惡意去訪問(wèn)登錄接口而設(shè)置的一個(gè)功能,今天我們就來(lái)看看在前后端分離的項(xiàng)目中,SpringBoot是如何提供服務(wù)的
    2022-05-05

最新評(píng)論