最新国产好看的视频,伊人天堂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();
        //設置資源。
        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);
    }
}

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

相關文章

  • 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的氣泡詩詞特效,文中的示例代碼講解詳細,對我們學習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)維護的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-04-04
  • 如何使用IDEA開發(fā)Spark SQL程序(一文搞懂)

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

    Spark SQL 是一個用來處理結構化數(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的相關組件,簡化了開發(fā)人員的配置工作,需要的朋友可以參考下
    2023-10-10
  • SpringBoot程序CPU飆升的排查指南

    SpringBoot程序CPU飆升的排查指南

    在生產(chǎn)環(huán)境里,大家或多或少都遇到過這種場景:某個 Spring Boot 應用突然 CPU 飆升,打滿服務器資源,監(jiān)控報警狂響,業(yè)務接口開始超時,登錄服務器,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)境準備、項目創(chuàng)建、依賴管理、Maven配置、以及解決常見問題的步驟,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • 詳解Java中NullPointerException異常的原因詳解以及解決方法

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

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

    maven中resource配置使用詳解

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

最新評論

潮安县| 武冈市| 泗水县| 毕节市| 察哈| 江阴市| 凌源市| 本溪市| 沛县| 基隆市| 商都县| 天水市| 新河县| 绥江县| 固始县| 虹口区| 迭部县| 礼泉县| 新津县| 江口县| 孙吴县| 车险| 桂林市| 吉林市| 习水县| 张家港市| 鄂伦春自治旗| 葫芦岛市| 沐川县| 济源市| 斗六市| 岳西县| 出国| 砀山县| 荥经县| 宁武县| 三门峡市| 于田县| 兰西县| 凌云县| 陆河县|