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

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)單介紹

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

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

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

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

二、注解說(shuō)明

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

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

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

1. 注解源碼

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

① @PropertySource注解

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

@PropertySource注解的源碼詳見:

/**
 * @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版本開始提供的注解,注解中各個(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版本開始提供的注解,在@PropertySources注解中,只提供了一個(gè)PropertySource數(shù)組類型的value屬性。

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

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

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

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

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

3. 使用案例

本節(jié),主要實(shí)現(xiàn)一個(gè)通過@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()方法中,通過AnnotationConfigApplicationContext類的對(duì)象獲取到ConfigurableEnvironment類型的環(huán)境變量對(duì)象environment,然后通過environment對(duì)象獲取配置文件中的name和age的值并進(jìn)行打印。

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

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

lwk ====>>> 18

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

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

相關(guān)文章

  • 2024最新版Java?JDK安裝配置圖文詳解全攻略

    2024最新版Java?JDK安裝配置圖文詳解全攻略

    這篇文章主要介紹了2024最新版Java?JDK安裝配置圖文詳解的相關(guān)資料,包含準(zhǔn)備工作、下載步驟、安裝指南及環(huán)境變量配置驗(yàn)證,供用戶輕松搭建Java開發(fā)環(huán)境,需要的朋友可以參考下
    2024-09-09
  • Java和Android崩潰捕獲機(jī)制

    Java和Android崩潰捕獲機(jī)制

    這篇文章主要為大家介紹了Java和Android崩潰捕獲機(jī)制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • SpringBoot集成OAuth2.0的實(shí)現(xiàn)示例

    SpringBoot集成OAuth2.0的實(shí)現(xiàn)示例

    OAuth2.0是安全授權(quán)協(xié)議,通過訪問令牌替代密碼,保障用戶數(shù)據(jù)安全,適用于社交登錄、第三方數(shù)據(jù)訪問等場(chǎng)景,下面就來(lái)介紹一下SpringBoot集成OAuth2.0,感興趣的可以了解一下
    2025-06-06
  • java導(dǎo)出Excel(非模板)可導(dǎo)出多個(gè)sheet方式

    java導(dǎo)出Excel(非模板)可導(dǎo)出多個(gè)sheet方式

    Java開發(fā)中,導(dǎo)出Excel是常見需求,有時(shí)需要支持多個(gè)Sheet導(dǎo)出,此技巧介紹非模板方式實(shí)現(xiàn)單標(biāo)題單Sheet以及多Sheet導(dǎo)出,標(biāo)題一致或不一致均可,可換成Map使用,適合個(gè)人開發(fā)者和需要Excel導(dǎo)出功能的場(chǎng)景
    2024-09-09
  • 現(xiàn)代高效的java構(gòu)建工具gradle的快速入門

    現(xiàn)代高效的java構(gòu)建工具gradle的快速入門

    和Maven一樣,Gradle只是提供了構(gòu)建項(xiàng)目的一個(gè)框架,真正起作用的是Plugin,本文主要介紹了gradle入門,文中通過示例代碼介紹的非常詳細(xì),感興趣的小伙伴們可以參考一下
    2021-11-11
  • 關(guān)于JAVA_HOME路徑修改之后JDK的版本依然不更改的解決辦法

    關(guān)于JAVA_HOME路徑修改之后JDK的版本依然不更改的解決辦法

    今天小編就為大家分享一篇關(guān)于JAVA_HOME路徑修改之后JDK的版本依然不更改的解決辦法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-04-04
  • Java日期時(shí)間與正則表達(dá)式超詳細(xì)整理(適合新手入門)

    Java日期時(shí)間與正則表達(dá)式超詳細(xì)整理(適合新手入門)

    如果使用得當(dāng),正則表達(dá)式是匹配各種模式的強(qiáng)大工具,下面這篇文章主要給大家介紹了關(guān)于Java日期時(shí)間與正則表達(dá)式超詳細(xì)整理的相關(guān)資料,本文非常適合新手入門,需要的朋友可以參考下
    2023-04-04
  • java高并發(fā)鎖的3種實(shí)現(xiàn)示例代碼

    java高并發(fā)鎖的3種實(shí)現(xiàn)示例代碼

    本篇文章主要介紹了java高并發(fā)鎖的3種實(shí)現(xiàn)示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-08-08
  • Java案例實(shí)現(xiàn)不重復(fù)的隨機(jī)數(shù)

    Java案例實(shí)現(xiàn)不重復(fù)的隨機(jī)數(shù)

    這篇文章主要介紹了Java案例實(shí)現(xiàn)不重復(fù)的隨機(jī)數(shù),通過創(chuàng)建Set集合對(duì)象,可以使用HashSet也可以使用TreeSet,區(qū)別在于TreeSet是排序后的,創(chuàng)建隨機(jī)數(shù)對(duì)象,獲取一個(gè)隨機(jī)數(shù)去重等操作,需要的朋友可以參考一下
    2022-04-04
  • SpringBoot中郵件任務(wù)的使用

    SpringBoot中郵件任務(wù)的使用

    這篇文章主要介紹了SpringBoot中郵件任務(wù)的使用,SpringBoot?郵件任務(wù)是指使用SpringBoot框架來(lái)實(shí)現(xiàn)郵件發(fā)送和接收的功能,通過SpringBoot的自動(dòng)配置和簡(jiǎn)化的開發(fā)流程,我們可以輕松地集成郵件功能到我們的應(yīng)用程序中,需要的朋友可以參考下
    2023-10-10

最新評(píng)論

凌海市| 荔波县| 宜君县| 东乡| 滕州市| 沂水县| 内丘县| 保靖县| 稻城县| 公主岭市| 舟山市| 江西省| 揭阳市| 武隆县| 余江县| 锦屏县| 桐乡市| 新余市| 赣榆县| 酒泉市| 旬阳县| 河曲县| 湖北省| 比如县| 新泰市| 阳高县| 太谷县| 青铜峡市| 邵阳市| 格尔木市| 郧西县| 达州市| 随州市| 绥阳县| 南投县| 松江区| 施秉县| 共和县| 石嘴山市| 靖宇县| 石楼县|