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

Spring高級注解@PropertySource詳細解讀

 更新時間:2023年11月23日 09:40:17   作者:chaojunma  
這篇文章主要介紹了Spring高級注解@PropertySource詳細解讀,@PropertySource注解用于指定資源文件讀取的位置,它不僅能讀取properties文件,也能讀取xml文件,并且通過YAML解析器,配合自定義PropertySourceFactory實現(xiàn)解析yaml文件,需要的朋友可以參考下

Spring注解@PropertySource

@PropertySource注解用于指定資源文件讀取的位置,它不僅能讀取properties文件,也能讀取xml文件,并且通過YAML解析器,配合自定義PropertySourceFactory實現(xiàn)解析yaml文件

讀取properties文件

在resources資源目錄下存在datasource-config.properties,要加載此文件中的配置,需要用到@PropertySource注解,具體如下:

datasource-config.properties文件

druid.driverClassName=com.mysql.jdbc.Driver
druid.url=jdbc:mysql://127.0.0.1/db1?useUnicode=true&characterEncoding=UTF-8
druid.username=root
druid.password=123456

加載配置類

@Slf4j
@Setter
@Getter
@Configuration
@PropertySource(value = "classpath:datasource-config.properties")
@ConfigurationProperties(prefix = "druid")
public class SpringConfig {
 
    @Value("${druid.driverClassName}")
    private String driverClassName;
 
    @Value("${druid.url}")
    private String url;
 
    @Value("${druid.username}")
    private String username;
 
    @Value("${druid.password}")
    private String password;
 
 
    @Bean
    public void druidDataSource(){
        log.info("driverClassName:[{}], url:[{}], username:[{}], password:[{}]", driverClassName, url, username, password);
    }
}

讀取xml文件

在resources資源目錄下存在datasource-config.xml,要加載此文件中的配置,需要用到@PropertySource注解,具體如下:

加載配置類

@Slf4j
@Setter
@Getter
@Configuration
@PropertySource(value = "classpath:datasource-config.xml")
@ConfigurationProperties(prefix = "druid")
public class SpringConfig {
 
    @Value("${druid.driverClassName}")
    private String driverClassName;
 
    @Value("${druid.url}")
    private String url;
 
    @Value("${druid.username}")
    private String username;
 
    @Value("${druid.password}")
    private String password;
 
 
    @Bean
    public void druidDataSource(){
        log.info("driverClassName:[{}], url:[{}], username:[{}], password:[{}]", driverClassName, url, username, password);
    }
}

datasource-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <entry key="druid.driverClassName">com.mysql.jdbc.Driver</entry>
    <entry key="druid.url">jdbc:mysql://127.0.0.1/db1?useUnicode=true&amp;characterEncoding=UTF-8</entry>
    <entry key="druid.username">root</entry>
    <entry key="druid.password">5201314..a</entry>
</properties>

讀取yaml文件

如果想通過@PropertySorce注解加載yaml文件,需要配合自定義PropertySourceFactory實現(xiàn)。

添加依賴

<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
    <version>1.23</version>
</dependency>

自定義PropertySourceFactory

import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.core.env.PropertiesPropertySource;
import org.springframework.core.env.PropertySource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.core.io.support.PropertySourceFactory;
import java.io.IOException;
import java.util.Properties;
 
public class YAMLPropertySourceFactory implements PropertySourceFactory {
 
    @Override
    public PropertySource<?> createPropertySource(String name, EncodedResource encodedResource) throws IOException {
        //創(chuàng)建一個YAML解析工廠。
        YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
        //設(shè)置資源。
        factory.setResources(encodedResource.getResource());
 
        //獲取解析后的Properties對象
        Properties properties = factory.getObject();
        //返回。此時不能像默認工廠那樣返回ResourcePropertySource對象 ,要返回他的父類PropertiesPropertySource對象。
        return name != null ? new PropertiesPropertySource(name, properties) :
                new PropertiesPropertySource(encodedResource.getResource().getFilename(),properties);
    }
}

datasource-config.yaml

druid:
  driverClassName: com.mysql.jdbc.Driver
  url: jdbc:mysql://127.0.0.1/db1?useUnicode=true&amp;characterEncoding=UTF-8
  username: root
  password: 123456

加載配置類

@Slf4j
@Setter
@Getter
@Configuration
@PropertySource(value = "classpath:datasource-config.yml", factory = YAMLPropertySourceFactory.class)
@ConfigurationProperties(prefix = "druid")
public class SpringConfig {
 
    @Value("${druid.driverClassName}")
    private String driverClassName;
 
    @Value("${druid.url}")
    private String url;
 
    @Value("${druid.username}")
    private String username;
 
    @Value("${druid.password}")
    private String password;
 
 
    @Bean
    public void druidDataSource(){
        log.info("driverClassName:[{}], url:[{}], username:[{}], password:[{}]", driverClassName, url, username, password);
    }
}

到此這篇關(guān)于Spring高級注解@PropertySource詳細解讀的文章就介紹到這了,更多相關(guān)Spring注解@PropertySource內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Object的wait和notify方法使用詳解

    Java Object的wait和notify方法使用詳解

    這篇文章主要介紹了Java Object的wait和notify方法使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • 利用Java實現(xiàn)帶GUI的氣泡詩詞特效

    利用Java實現(xiàn)帶GUI的氣泡詩詞特效

    這篇文章主要為大家介紹了如何利用Java語言實現(xiàn)帶GUI的氣泡詩詞特效,文中的示例代碼講解詳細,對我們學(xué)習(xí)Java有一定幫助,感興趣的可以了解一下
    2022-08-08
  • Java制作智能拼圖游戲原理及代碼

    Java制作智能拼圖游戲原理及代碼

    本文給大家分享的是使用Java實現(xiàn)智能拼圖游戲的原理,以及實現(xiàn)的源碼,推薦給大家,有需要的小伙伴可以參考下。
    2015-03-03
  • spring boot整合flyway實現(xiàn)數(shù)據(jù)的動態(tài)維護的示例代碼

    spring boot整合flyway實現(xiàn)數(shù)據(jù)的動態(tài)維護的示例代碼

    本文主要介紹了spring boot整合flyway實現(xiàn)數(shù)據(jù)的動態(tài)維護的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • 如何使用IDEA開發(fā)Spark SQL程序(一文搞懂)

    如何使用IDEA開發(fā)Spark SQL程序(一文搞懂)

    Spark SQL 是一個用來處理結(jié)構(gòu)化數(shù)據(jù)的spark組件。它提供了一個叫做DataFrames的可編程抽象數(shù)據(jù)模型,并且可被視為一個分布式的SQL查詢引擎。這篇文章主要介紹了如何使用IDEA開發(fā)Spark SQL程序(一文搞懂),需要的朋友可以參考下
    2021-08-08
  • SpringBoot中對SpringMVC的自動配置詳解

    SpringBoot中對SpringMVC的自動配置詳解

    這篇文章主要介紹了SpringBoot中的SpringMVC自動配置詳解,Spring MVC自動配置是Spring Boot提供的一種特性,它可以自動配置Spring MVC的相關(guān)組件,簡化了開發(fā)人員的配置工作,需要的朋友可以參考下
    2023-10-10
  • SpringBoot程序CPU飆升的排查指南

    SpringBoot程序CPU飆升的排查指南

    在生產(chǎn)環(huán)境里,大家或多或少都遇到過這種場景:某個 Spring Boot 應(yīng)用突然 CPU 飆升,打滿服務(wù)器資源,監(jiān)控報警狂響,業(yè)務(wù)接口開始超時,登錄服務(wù)器,top一看,只能看到是 java 進程在耗 CPU,所以本文給大家介紹了SpringBoot程序CPU飆升的排查指南,需要的朋友可以參考下
    2025-08-08
  • Java搭建一個springboot3.4.1項目?JDK21的詳細過程

    Java搭建一個springboot3.4.1項目?JDK21的詳細過程

    這篇文章詳細介紹了如何使用IntelliJ IDEA搭建一個基于Spring Boot 3.4.1的項目,并使用JDK 21和Maven 3.6.3,涵蓋了環(huán)境準(zhǔn)備、項目創(chuàng)建、依賴管理、Maven配置、以及解決常見問題的步驟,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • 詳解Java中NullPointerException異常的原因詳解以及解決方法

    詳解Java中NullPointerException異常的原因詳解以及解決方法

    這篇文章主要介紹了詳解Java中NullPointerException異常的原因詳解以及解決方法。文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • maven中resource配置使用詳解

    maven中resource配置使用詳解

    這篇文章主要介紹了maven中resource配置使用,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07

最新評論

迭部县| 驻马店市| 马公市| 南昌县| 固安县| 枣庄市| 鲁山县| 商洛市| 西充县| 阿勒泰市| 正蓝旗| 扎赉特旗| 仙桃市| 武义县| 陆良县| 河西区| 德安县| 登封市| 海盐县| 乐业县| 米脂县| 留坝县| 焦作市| 内江市| 池州市| 乡宁县| 论坛| 朝阳县| 土默特右旗| 武鸣县| 南京市| 鄂州市| 凭祥市| 宜宾县| 政和县| 精河县| 布尔津县| 新民市| 福鼎市| 大田县| 安龙县|