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

springboot項目中PropertySource如何讀取yaml配置文件

 更新時間:2024年01月13日 14:55:43   作者:luffy5459  
這篇文章主要介紹了springboot項目中PropertySource如何讀取yaml配置文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

PropertySource如何讀取yaml配置文件

springboot項目中,當我們使用@Value注解讀取配置屬性,默認的配置文件是properties類型文件,如果一些配置來自yaml格式配置文件,那么就需要做一個配置。

PropertySource注解提供了factory屬性,可以設置yaml格式文件加載工廠類。

下面介紹如何自定義factory實現(xiàn)yaml配置文件加載。

項目準備

maven工程pom.xml增加spring-boot-starter-web依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

自定義YamlPropertySourceFactory

package com.xxx.web.config;
import org.springframework.boot.env.YamlPropertySourceLoader;
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.List;
 
public class YamlPropertySourceFactory implements PropertySourceFactory {
    @Override
    public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
        List<PropertySource<?>> list = new YamlPropertySourceLoader().load(resource.getResource().getFilename(),resource.getResource());
        if(list != null && list.size() > 0)
            return list.get(0);
        return null;
    }
}

yml配置文件使用

package com.xxx.web.controller;
import com.xxx.web.config.YamlPropertySourceFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
 
import java.util.HashMap;
import java.util.Map;
 
@RestController
@RequestMapping("/test/v1")
@PropertySource(value = {"file:conf/test.yml"},factory = YamlPropertySourceFactory.class)
public class TestController {
 
    @Value("${business.errorCode}")
    private int errorCode;
 
    @Value("${business.msg}")
    private String msg;
 
    @Value("${business.data}")
    private String data;
 
    @RequestMapping(value = "/status",method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity queryStatus(){
        Map<String,Object> result = new HashMap(){
            {
                put("msg",msg);
                put("errorCode",errorCode);
                put("data",data);
            }
        };
        return ResponseEntity.ok(result);
    }
 
}

這里為了配合項目配置,配置文件放在工程根目錄下的conf/test.yml

business:
  errorCode: 2
  msg: success,
  data: hallo

啟動項目,我們可以訪問地址http://localhost:8080/test/v1/status,可以看到,返回結果為配置文件中設置的值。

這里值得注意的是,@PropertySource在指定配置文件位置的時候,使用的是file,這種方式指定的路徑,是相對于項目根路徑來的,所以我們的配置文件沒有放在resources目錄下,

如果放在resources目錄下,要通過file訪問到,那么,位置需要設置成這樣:

@PropertySource(value={"file:src/main/resources/conf/test.yml"},factory=YamlPropertySourceFactory.class)

這里還可以通過classpath的方式來指定,如果conf/test.yml放在了resources類路徑下。

就可以這樣設置:

@PropertySource(value = {"classpath:conf/test.yml"},factory = YamlPropertySourceFactory.class)

注意兩種方式的區(qū)別,以及配置文件需要放置的位置。 

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • SpringBoot輕松實現(xiàn)ip解析(含源碼)

    SpringBoot輕松實現(xiàn)ip解析(含源碼)

    IP地址一般以數(shù)字形式表示,如192.168.0.1,IP解析是將這個數(shù)字IP轉換為包含地區(qū)、城市、運營商等信息的字符串形式,如“廣東省深圳市 電信”,這樣更方便人理解和使用,本文給大家介紹了SpringBoot如何輕松實現(xiàn)ip解析,需要的朋友可以參考下
    2023-10-10
  • 舉例講解Java中synchronized關鍵字的用法

    舉例講解Java中synchronized關鍵字的用法

    這篇文章主要介紹了Java中synchronized關鍵字的用法,針對synchronized修飾方法的使用作出了簡單講解和演示,需要的朋友可以參考下
    2016-04-04
  • Spring中@Value使用詳解及SPEL表達式

    Spring中@Value使用詳解及SPEL表達式

    這篇文章主要介紹了Spring中@Value使用詳解及SPEL表達式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Springboot中的@ConditionalOnBean注解詳細解讀

    Springboot中的@ConditionalOnBean注解詳細解讀

    這篇文章主要介紹了Springboot中的@ConditionalOnBean注解詳細解讀,@ConditionalOnMissingBean注解兩個類,一個Computer類,一個配置類,想要完成;如果容器中沒有Computer類,就注入備用電腦Computer類,如果有Computer就不注入,需要的朋友可以參考下
    2023-11-11
  • Java實現(xiàn)公用實體類轉Tree結構

    Java實現(xiàn)公用實體類轉Tree結構

    這篇文章主要為大家介紹了一個Java工具類,可以實現(xiàn)Java公用實體類轉Tree結構,文中的示例代碼簡潔易懂,感興趣的小伙伴可以參考一下
    2024-10-10
  • java 四舍五入使java保留2位小數(shù)示例講解

    java 四舍五入使java保留2位小數(shù)示例講解

    這篇文章主要介紹了java四舍五入使java保留2位小數(shù)示例,大家參考使用
    2013-12-12
  • Java設計模式之代理模式詳細解讀

    Java設計模式之代理模式詳細解讀

    這篇文章主要介紹了Java設計模式的代理模式,文中有非常詳細的代碼示例,對正在學習Java設計模式的小伙伴有很大的幫助,感興趣的小伙伴可以參考一下
    2021-08-08
  • SpringBoot快速整合RabbitMq小案例(使用步驟)

    SpringBoot快速整合RabbitMq小案例(使用步驟)

    這篇文章主要介紹了SpringBoot快速整合RabbitMq小案例,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Java中static的特點

    Java中static的特點

    本文主要介紹了Java中static的特點。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • Java處理異常2種機制關鍵字區(qū)別解析

    Java處理異常2種機制關鍵字區(qū)別解析

    這篇文章主要介紹了java處理異常2種機制關鍵字區(qū)別解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01

最新評論