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

Spring?Boot?如何正確讀取配置文件屬性

 更新時(shí)間:2022年04月20日 16:45:42   作者:劍圣無痕?  
這篇文章主要介紹了Spring?Boot?如何正確讀取配置文件屬性,項(xiàng)目中經(jīng)常會(huì)經(jīng)常讀取配置文件中的屬性的值,Spring?Boot提供了很多注解讀取配置文件屬性,那么如何正確使用呢,下文一起來參考下面文章內(nèi)容吧

前言

項(xiàng)目中經(jīng)常會(huì)經(jīng)常讀取配置文件中的屬性的值,Spring Boot提供了很多注解讀取配置文件屬性,那么如何正確使用呢?

@Value

@Value用來讀取application.yml配置文件中屬性的值。

示例代碼

application.yml文件中屬性:

//定義屬性
fileName : test
isFile : false
filePath : c://test

@value讀取application.yml屬性值:

@Configuration
public class FileConfig
{
    @Value("${fileName}")
    private final String fileName;
    @Value("${isFile}")
    private boolean isFile;
    @Value("${filePath}")
    private static String filePath;
}

測(cè)試:

 @Autowired
    private FileConfig fileConfig;
    @GetMapping("getFileConfig")
    public void getFileConfig()
    {
        logger.info("fileConfig:{}",fileConfig);
    }

運(yùn)行結(jié)果:

fileConfig:FileConfig [fileName=, isFile=false, filePath=null]

特別注意:

  • @Value不能將屬性值讀取靜態(tài)變量,否則讀取的值為空。
  • @Value不能將屬性值讀取常量,否則讀取的值為空。
  • @Value不能讀取boolean類型的值,經(jīng)過測(cè)試Spring Boot2.1的版本是無效的,2.2以上版本支持。

所以個(gè)人建議非必要情況,盡量少用@Value注解讀取屬性值。

@ConfigurationProperties

讀取配置文件值并且轉(zhuǎn)換成類對(duì)象,便于獲取值和修改屬性值。

示例代碼

application.yml文件中屬性:

http:
  pool:
    # 連接超時(shí)
    connectTimeout: 5000
    #獲取連接池中連接超時(shí)
    connectionRequestTimeout: 1000
    #每個(gè)路由連接數(shù)量
    defaultMaxPerRoute: 50
    # /連接池中最大連接數(shù)
    maxTotal: 50
    # 服務(wù)器返回?cái)?shù)據(jù)(response)的時(shí)間
    socketTimeout: 5000
    #定義不活動(dòng)的時(shí)間(以毫秒為單位),連接回收
    validateAfterInactivity: 30000      

@ConfigurationProperties讀取application.yml中以http.pool開頭的屬性值:

//以http.pool開頭
@Component
@ConfigurationProperties(prefix = "http.pool")
public class HttpClientConfig implements Serializable
{
    private static final long serialVersionUID = -4608251658338406043L;
    /**
     * 最大連接數(shù)
     */
    private Integer maxTotal;
    /**
     * 路由是對(duì)最大連接數(shù)的細(xì)分
     * 每個(gè)路由基礎(chǔ)的連接數(shù)
     */
    private Integer defaultMaxPerRoute;
    /**
     * 連接超時(shí)時(shí)間
     */
    private Integer connectTimeout;
    /**
     * 從連接池中獲取連接的超時(shí)時(shí)間
     */
    private Integer connectionRequestTimeout;
    /**
     * 服務(wù)器返回?cái)?shù)據(jù)(response)的時(shí)間
     */
    private Integer socketTimeout;

測(cè)試:

  @GetMapping("getHttpClientConfig")
    public void getHttpClientConfig()
    {
        String json=FastJsonUtil.toJSONString(httpClientConfig);
        logger.info("fileConfig:{}",json);
    }

屬性嵌套:

@ConfigurationProperties 可以嵌套List、map、class

config:
  url:http://localhsot:8080
  gaode-map:
    host: https://restapi.amap.com/v3
    key: 1234
@ConfigurationProperties(prefix="config")
public class Config
{
    //高德地圖信息
    private GaodeMap gaodeMap;
 }

特別注意:

  • 默認(rèn)情況不會(huì)將實(shí)體注入到spring的容器中,需要結(jié)合@EnableConfigurationProperties或者@Component一起使用,否則注入對(duì)象為空。

@EnableConfigurationProperties

@ConfigurationProperties讀取對(duì)象注入到spring容器中。例如上述示例也可以采用@EnableConfigurationProperties 來注入

@EnableConfigurationProperties(HttpClientConfig.class)
public class FileController
{
    private Logger logger = LoggerFactory.getLogger(FileController.class);
    @Autowired
    private FileConfig fileConfig;
    @GetMapping("getHttpClientConfig")
    public void getHttpClientConfig()
    {
        String json=FastJsonUtil.toJSONString(httpClientConfig);
        logger.info("fileConfig:{}",json);
    }
  }

@ConfigurationPropertiesScan

用來掃描@ConfigurationProperties實(shí)體類并將類注入到Spring容器,上述示例可以如下使用

@ConfigurationPropertiesScan("com.xx.fw.config")
public class FwCoreApplication
{
    public static void main(String[] args)
    {
        SpringApplication.run(FwCoreApplication.class, args);
    }
}

@PropertySource

@PropertySource 主要用于讀取指定的配置文件,需要結(jié)合@ConfigurationProperties 注解一起使用實(shí)現(xiàn)配置文件和Java Bean的注入操作。

示例代碼

屬性文件user.properteis:

user.id=222
user.name=劍圣
user.age=28

實(shí)體類定義:

@Component
@ConfigurationProperties(prefix = "user")
@PropertySource(value = {"classpath:user.properties"})
public class UserConfig 
{
    private String id;
    private String name;
    private int age;
 }

測(cè)試:

    @GetMapping("getUserConfig")
    public void getUserConfig()
    {
        String json=FastJsonUtil.toJSONString(userConfig);
        logger.info("userConfig:{}",json);
    }

輸出結(jié)果:

c.s.fw.controller.FileController - userConfig:{"age":28,"id":"123","name":"admin"}

總結(jié)

重點(diǎn)講解了通過各種注解讀取配置文件種屬性值,每種方式都是各自的優(yōu)缺點(diǎn),項(xiàng)目中一定要統(tǒng)一規(guī)范使用,便于項(xiàng)目維護(hù)和排查問題。

到此這篇關(guān)于Spring Boot 如何正確讀取配置文件屬性的文章就介紹到這了,更多相關(guān)Spring Boot 讀取文件屬性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot 事務(wù)示例詳解

    Spring Boot 事務(wù)示例詳解

    Spring Boot 提供了強(qiáng)大的事務(wù)管理功能,通過 @Transactional 注解可以方便地配置事務(wù)的傳播行為和屬性,理解和合理應(yīng)用這些配置,可以有效地提高應(yīng)用程序的數(shù)據(jù)一致性和完整性,本文介紹Spring Boot 事務(wù)的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2025-04-04
  • 修改jar包package目錄結(jié)構(gòu)操作方法

    修改jar包package目錄結(jié)構(gòu)操作方法

    這篇文章主要介紹了修改jar包package目錄結(jié)構(gòu)操作方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-07-07
  • Spring Core動(dòng)態(tài)代理的實(shí)現(xiàn)代碼

    Spring Core動(dòng)態(tài)代理的實(shí)現(xiàn)代碼

    通過JDK的Proxy方式或者CGLIB方式生成代理對(duì)象的時(shí)候,相關(guān)的攔截器已經(jīng)配置到代理對(duì)象中去了,接下來通過本文給大家介紹Spring Core動(dòng)態(tài)代理的相關(guān)知識(shí),需要的朋友可以參考下
    2021-10-10
  • 完美解決因數(shù)據(jù)庫(kù)一次查詢數(shù)據(jù)量過大導(dǎo)致的內(nèi)存溢出問題

    完美解決因數(shù)據(jù)庫(kù)一次查詢數(shù)據(jù)量過大導(dǎo)致的內(nèi)存溢出問題

    今天小編就為大家分享一篇完美解決因數(shù)據(jù)庫(kù)一次查詢數(shù)據(jù)量過大導(dǎo)致的內(nèi)存溢出問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Gradle 6.6.1 安裝配置的詳細(xì)教程

    Gradle 6.6.1 安裝配置的詳細(xì)教程

    Gradle是一個(gè)基于Apache Ant和Apache Maven概念的項(xiàng)目自動(dòng)化構(gòu)建開源工具。這篇文章主要介紹了Gradle 6.6.1 安裝配置的詳細(xì)教程,需要的朋友可以參考下
    2020-09-09
  • druid執(zhí)行SQL出現(xiàn)錯(cuò)誤但不影響返回結(jié)果的問題及解決

    druid執(zhí)行SQL出現(xiàn)錯(cuò)誤但不影響返回結(jié)果的問題及解決

    這篇文章主要介紹了druid執(zhí)行SQL出現(xiàn)錯(cuò)誤但不影響返回結(jié)果的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • ScheduledExecutorService任務(wù)定時(shí)代碼示例

    ScheduledExecutorService任務(wù)定時(shí)代碼示例

    這篇文章主要介紹了ScheduledExecutorService任務(wù)定時(shí)代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Java中調(diào)用第三方接口的詳細(xì)代碼示例

    Java中調(diào)用第三方接口的詳細(xì)代碼示例

    這篇文章主要介紹了Java中調(diào)用第三方接口的詳細(xì)代碼示例,文章總結(jié)了多種Java進(jìn)行HTTP請(qǐng)求的方法,每種方法都有其特點(diǎn)和適用場(chǎng)景,從原生到封裝,再到聲明式客戶端,滿足了不同復(fù)雜度的HTTP請(qǐng)求需求,需要的朋友可以參考下
    2024-12-12
  • Java?Web開發(fā)環(huán)境配置詳解

    Java?Web開發(fā)環(huán)境配置詳解

    這篇文章主要介紹了Java?Web開發(fā)環(huán)境配置詳解,對(duì)初學(xué)者是個(gè)必備的過程,有需要的可以了解一下
    2016-11-11
  • Java SpringMVC的@RequestMapping注解使用及說明

    Java SpringMVC的@RequestMapping注解使用及說明

    這篇文章主要介紹了Java SpringMVC的@RequestMapping注解使用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評(píng)論

台州市| 旅游| 勃利县| 庆城县| 河北区| 北京市| 同江市| 航空| 镇沅| 台中市| 延长县| 城固县| 绍兴市| 苏尼特右旗| 长武县| 南京市| 曲阳县| 綦江县| 牡丹江市| 金门县| 辽阳县| 车致| 富平县| 鄂州市| 怀仁县| 富源县| 安陆市| 日喀则市| 沅陵县| 甘德县| 铅山县| 晋中市| 肇庆市| 临潭县| 萍乡市| 西吉县| 洞头县| 西丰县| 新建县| 鹿邑县| 钦州市|