日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

spring配置文件_SpringBoot入门建站全系列(二十三)配置文件优先级及自定义配置文件...

發布時間:2025/6/17 javascript 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring配置文件_SpringBoot入门建站全系列(二十三)配置文件优先级及自定义配置文件... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SpringBoot入門建站全系列(二十三)配置文件優先級及自定義配置文件

一、概述

Spring Boot允許多種配置來源,官網是這樣說的:

Spring Boot使用一種非常特殊的PropertySource順序,旨在允許合理地覆蓋值。按以下順序考慮屬性(優先級從高到低):

  • Devtools 主目錄上的全局設置屬性(~/.spring-boot-devtools.properties當devtools處于活動狀態時)。
  • @TestPropertySource 你的測試注釋。
  • properties屬性測試。可 用于測試特定應用程序片段@SpringBootTest的 測試注釋。
  • 命令行參數。
  • 來自SPRING_APPLICATION_JSON(嵌入在環境變量或系統屬性中的內聯JSON)的屬性。
  • ServletConfig init參數。
  • ServletContext init參數。
  • JNDI屬性來自java:comp/env。
  • Java系統屬性(System.getProperties())。
  • OS環境變量。
  • RandomValuePropertySource,只有在擁有random.*屬性。
  • 特定于配置文件的應用程序屬性在打包的jar(application-{profile}.properties和YAML變體)之外。
  • 打包在jar中的特定于配置文件的應用程序屬性(application-{profile}.properties 以及YAML變體)。
  • 打包jar之外的應用程序屬性(application.properties以及YAML變體)。
  • 打包在jar中的應用程序屬性(application.properties和YAML變體)。
  • @PropertySource 在@Configuration類上的注釋。
  • 默認屬性(由設置指定SpringApplication.setDefaultProperties)。
  • 事實上,這個地方還少了一個,那就是配置中心,配置中心的優先級是最高的,還可以動態刷新,可以參考《SpringCloud技術指南系列(八)配置管理之Consul配置中心》配置中心的使用。

    而且,我們常用的,一般有命令行參數、application-{profile}.properties和application.properties。自定義配置文件用的也不多,但是還是有人用的。

    本篇著重講述下常用的配置方式。

    首發地址: 品茗IT-同步發布

    如果大家正在尋找一個java的學習環境,或者在開發中遇到困難,可以加入我們的java學習圈,點擊即可加入,共同學習,節約學習時間,減少很多在學習中遇到的難題。

    二、命令行參數

    默認情況下,SpringApplication將任何命令行選項參數(即,以--開頭的參數,如--server.port=9000)轉化為property,并將它們添加到spring Environment。如前所述,命令行屬性始終優先于其他屬性源。

    如果您不希望將命令行屬性添加到Environment,則可以使用禁用它們SpringApplication.setAddCommandLineProperties(false)。

    三、主配置文件

    3.1 主配置常用配置

    SpringApplication從application.properties以下位置的文件加載屬性并將它們添加到Spring Environment:(優先級從高往低)

  • Jar包同級目錄/config
  • Jar包同級目錄
  • classpath 下的/config
  • classpath根路徑 /
  • 如果你不喜歡properties文件,可以使用YAML替代properties文件,加載順序什么都是一樣的,只不過寫法不一樣。 下面是兩種寫法的不同:

    properties文件:

    server.port=8858 spring.profiles.active=loc

    yaml文件

    server:port: 8812 spring:profiles:active: loc

    yaml文件看起來簡潔明了,properties文件看起來一坨一坨的,但是我更喜歡properties文件,因為yaml文件對語法要求嚴格,tab鍵和空格鍵入的內容都不一樣,很容易出錯。

    3.2 主配置替換

    這種配置方法很少使用,可以說基本上沒人用。

    如果您不喜歡application.properties配置文件名,可以通過指定spring.config.name環境屬性切換到另一個文件名。您還可以使用spring.config.location屬性(以逗號分隔的目錄位置或文件路徑列表)來引用顯式位置。spring.config.additional-location來指定額外配置文件。

    spring.config.name的作用就是給application.properties換個名。

    spring.config.location就是指定了加載配置文件的路徑。就是不再從上面說的那個路徑取配置文件。

    spring.config.additional-location就是指定了額外配置文件的加載路徑。除了在上面的在默認位置搜索配置文件,還搜索這個配置指定的位置的配置文件。而且優先級最高。

    這三個配置都不能寫在應用里,因為它是在應用啟動前就確定的,需要在環境變量或者命令行參數確定。

    四、其他配置文件

    如果我們在application.properties中寫入了太多配置,想用其他配置文件來寫配置時,就需要考慮下如何加載這些配置文件。

    4.1 指定配置文件加載

    指定配置文件加載,就是指application-{profile}.properties和YAML變體 這種形式。

    一直以來,我一直對這種形式存在誤解,以為它只能區分環境,后來才發現,自己錯了,這個只是純粹的指向新的配置文件,你指了哪個,哪個就能加載。下面說下它分別怎么用。

    區分環境:

    • 比如有三個環境的配置文件application-loc.properties,application-dev.properties,application-prod.properties,沒有固定位置,只要放在Spring能加載的位置即可,一般放在application.properties的低一級目錄,方便區分,比如application.properties放在classpath下,這些配置文件可以放在config/目錄下。
    • 在命令行參數,或者application.properties中,使用spring.profiles.active=loc指定要來指定加載application-loc.properties配置文件。其他雷同。

    區分應用:

    • 比如我們有用到redis,我們想把redis的配置單獨出去,不想放在application.properties里面變一坨。就可以單獨新建配置文件application-redis.properties,放在Spring能加載的位置。
    • application.properties中(這個就沒必要放命令行參數了,因為我們應用里面肯定要用到的),使用spring.profiles.active=loc,redis指定要來指定加載application-redis.properties配置文件。
    • 如果使用命令行參數傳遞的spring.profiles.active=loc,可能會覆蓋掉配置文件中的redis配置,這時候,我們可以使用spring.profiles.include配置,疊加激活profile,如果配置spring.profiles.include=redis,指定spring.profiles.active=loc,就可以同時激活loc,redis,等同于spring.profiles.active=loc,redis。

    4.2 自定義配置文件加載

    自定義配置文件,就是定義的配置文件命名規范不再遵循Spring boot的要求,自由加載。需要使用@PropertySource注解加載配置文件。

  • 先在classpath下建個配置文件,如user.properties。
  • user.properties:

    user.username=cff user.realName=大爺 user.mobile=23333 hello.message=sssssssssssssssssssaasa
  • 使用@PropertySource("classpath:user.properties")加載配置,同時使用@ConfigurationProperties自動綁定屬性,當然也可以使用@Value來注入配置。
  • 代碼示例:

    package cn.pomit.springbootwork.consulclient.service;import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource;@Configuration @ConfigurationProperties(prefix="user") @PropertySource("classpath:user.properties") public class UserConfig {private String userName;private String realName;private Integer mobile;private String message;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getRealName() {return realName;}public void setRealName(String realName) {this.realName = realName;}public Integer getMobile() {return mobile;}public void setMobile(Integer mobile) {this.mobile = mobile;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}@Overridepublic String toString() {return "UserConfig [userName=" + userName + ", realName=" + realName + ", mobile=" + mobile + ", message="+ message + "]";}}

    這樣就可以直接使用user.properties配置文件中的配置,這里有注意事項:

    • 只有@PropertySource,是不能加載配置的。
    • @ConfigurationProperties(prefix="user") 只綁定了user.開頭的屬性。
    • @Value 可以注入任何屬性。
    • @ConfigurationProperties和@Value的不同是,@ConfigurationProperties支持屬性綁定,@Value不行,但是@Value支持el表達式,@ConfigurationProperties不支持。

    五、Jar包外的配置文件

  • Spring boot默認讀取jar包當前目錄下的application.properties配置文件,以及config下的application.properties文件。
  • 也可以使用spring.config.location替換加載配置文件的路徑。
  • 也可以使用spring.config.additional-location來指定了額外配置文件的加載路徑。
  • 使用@PropertySource(value={"file:D:/test/user.properties"}) 這種形式,指定文件是D:/test目錄下的user.properties文件。也可以把D:/test/寫在配置文件中,如用out.profile.path=D:/test 指定,然后使用@PropertySource(value={"file:${out.profile.path}/user.properties"}) 來指定外部配置文件。
  • 品茗IT-博客專題:https://www.pomit.cn/lecture.html匯總了Spring專題、Springboot專題、SpringCloud專題、web基礎配置專題。

    快速構建項目

    Spring組件化構建

    SpringBoot組件化構建

    SpringCloud服務化構建

    喜歡這篇文章么,喜歡就加入我們一起討論SpringBoot使用吧!

    總結

    以上是生活随笔為你收集整理的spring配置文件_SpringBoot入门建站全系列(二十三)配置文件优先级及自定义配置文件...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。