前面說到沒有設定application.properties文件,現在我在main/resources資料夾下新建一個application.properties文件,並且寫上如下的配置
然後,啟動項目,
#好了,透過上面的啟動結果截圖,看到服務在連接埠”9090“啟動了。那麼如果在該目錄下在配置一個application.yml檔案吶,
#啟動結果如下,
* {@link EnvironmentPostProcessor} that configures the context environment by loading * properties from well known file locations. By default properties will be loaded from * 'application.properties' and/or 'application.yml' files in the following locations: * <ul> * <li>file:./config/</li> * <li>file:./config/{@literal *}/</li> * <li>file:./</li> * <li>classpath:config/</li> * <li>classpath:</li> * </ul>大體意思是”EnvironmentPostProcessor通過從眾所周知的文件路徑加載properties來配置上下文環境。預設的properties來自application.properties/application.yml文件,這些文件來自以下路徑“,file:./config/ 根資料夾(專案文件夾)下的config目錄file:./config/{@literal *}/ 根資料夾(專案資料夾)下的config/*/目錄file:./根資料夾(專案資料夾)下方classpath:config/ classpath下的config/classpath: classpath下#好了,我們已經知道application. properties/application.yml檔案會從以上的幾個位置加載,而我們設定的main/resources其實就是上面的classpath:,那麼上面的這些路徑是不是也有先後順序吶,順著ConfigFileApplicationListener這個類別繼續往下看,看到了下面的這樣一個屬性,
// Note the order is from least to most specific (last one wins) private static final String DEFAULT_SEARCH_LOCATIONS = "classpath:/,classpath:/config/,file:./,file:./config/*/,file:./config/";可以看到這個DEFAULT_SEARCH_LOCATIONS 指定的就是上面的幾個值,且上面的註釋很有意思,但是我沒翻譯好,通過例子來驗證吧。已經知道application.properties和application.yml的優先權,我們就用application.properties檔案來驗證就好了,在resources/config(運行路徑:classpath:/config/)下有application.properties,
服務在連接埠」9094「啟動,說明優先權為:file:./config/*/>file:./>classpath:/>classpath:/config/,最後驗證的點為file :/config,這個我想無須驗證了肯定優先權是最高的,為此優先權順序由高到低為:file:./config/ > file:./config/*/ > file:./ > classpath:/ > classpath:/config/,通俗點說就是:專案根路徑下的config>專案根路徑下的config/*/>專案根路徑>classpath:/config>classpath:/
以上是springboot預設的載入路徑有哪幾種的詳細內容。更多資訊請關注PHP中文網其他相關文章!