SpringBoot 配置文件存放位置及讀取順序


SpringBoot配置文件可以使用yml格式和properties格式

分別的默認命名為:application.yml、application.properties

存放目錄

SpringBoot配置文件默認可以放到以下目錄中,可以自動讀取到:

  • 項目根目錄下
  • 項目根目錄中config目錄下
  • 項目的resources目錄下
  • 項目resources目錄中config目錄下

 

讀取順序

     如果在不同的目錄中存在多個配置文件,它的讀取順序是:

        1、config/application.properties(項目根目錄中config目錄下)

        2、config/application.yml

        3、application.properties(項目根目錄下)

        4、application.yml

        5、resources/config/application.properties(項目resources目錄中config目錄下)

        6、resources/config/application.yml

        7、resources/application.properties(項目的resources目錄下)

        8、resources/application.yml

    注:

        1、如果同一個目錄下,有application.yml也有application.properties,默認先讀取application.properties。

        2、如果同一個配置屬性,在多個配置文件都配置了,默認使用第1個讀取到的,后面讀取的不覆蓋前面讀取到的。

        3、創建SpringBoot項目時,一般的配置文件放置在“項目的resources目錄下”

 

SpringBoot資源文件的存放位置設置

SpringBoot默認的存放靜態資源文件的位置是在:

 

里面的。

注:SpringBoot中的src/main/resources/資源文件夾對應classpath:。

 
默認存放靜態資源文件的位置,在SpringBoot項目中的文件夾位置為:


即:搜索文件夾的優先順序和數組中的順序一致。

當我們訪問:IP地址:端口號/時,就相當於訪問到了這四個文件夾。

如:訪問:localhost:8080/123.jpg時,就會先去看src/main/resources資源文件夾下的META-INF下的resoures文件夾中是否有123.jpg,沒  有的話再看src/main/resources資源文件夾下的resoures文件夾中是否有123.jpg,沒有的話再看src/main/resources資源文件夾下的static文件夾中是否有123.jpg,沒有的話再看src/main/resources資源文件夾下的public文件夾中是否有123.jpg。

 
手動配置其搜索資源文件的文件夾位置
 
把文件放在SpringBoot項目下的classpath中
方式一:通過配置類

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

/**
* 主動設置URL匹配路徑
*
* @author JustryDeng
* @date 2018年8月4日 上午1:36:38
*/
@Configuration
public class MyURLPatternConfiguration extends WebMvcConfigurationSupport {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/fileData/**").addResourceLocations("classpath:/myFile/");
super.addResourceHandlers(registry);
}
}
此時:訪問IP地址:端口號/fileData/時,就相當於到了src/main/resources資源文件夾下的myFile文件夾中了,圖示說明:

 

注意:此時默認的四個文件夾都失效了,如果想讓默認的四個文件夾依然有效,那么可以在配置類中多次通過.addResourceHandler添加指定那四個文件夾。

方式二:通過配置文件

# 設置當URI為/fileData/**時,才進過靜態資源
# 注:如果設置為/**,那么表示任何訪問都會經過靜態資源路徑
spring.mvc.static-path-pattern=/fileData/**

# 自定義路徑
# 注:自定義路徑時,默認的四個文件夾下中的“META-INF下的resoures文件夾”仍然有效,其他三個文件夾失效
# (此時:訪問ip:端口號/fileData/時,相當於訪問到了 “自定義的文件夾”和 “META-INF下的resoures文件夾”);
# 注:搜索文件時,自定義的文件夾的優先級要高於默認的四個文件夾
spring.resources.static-locations=classpath:/myFile/

# 提示:如果我們顯式地把自定義文件夾 和 默認的四個文件夾都寫出來,那么都會有效(此時,優先級 從左至右 依次降低)
#spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/myFile/
 
把文件放在項目jar包之外的服務器磁盤中的某個文件夾中
方式一:通過配置類

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

/**
* 主動設置URL匹配路徑
*
* @author JustryDeng
* @date 2018年8月4日 上午1:36:38
*/
@Configuration
public class MyURLPatternConfiguration extends WebMvcConfigurationSupport {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 指定到D盤下的myFile文件夾
// 注:如果是Linux的話,直接指定文件夾路徑即可,不需要指定哪個盤(Linux就一個可用盤)
registry.addResourceHandler("/fileData/**").addResourceLocations("file:D:/myFile/");
super.addResourceHandlers(registry);
}
}
此時:我們訪問IP地址:端口號/fileData/時,就相當於到了服務器D盤下的myFile文件夾中了。

注意:此時默認的四個文件夾都失效了,如果想讓默認的四個文件夾依然有效,那么可以在配置類中通過.addResourceHandler多次添加四個文件夾。

方式二:通過配置文件

# 設置當URI為/fileData/**時,才進過靜態資源
# 注:如果設置為/**,那么表示任何訪問都會經過靜態資源路徑
spring.mvc.static-path-pattern=/fileData/**

# 自定義路徑
# 注:自定義路徑時,默認的四個文件夾下中的“META-INF下的resoures文件夾”仍然有效,其他三個文件夾失效
# (此時:訪問ip:端口號/fileData/時,相當於訪問到了 “自定義的文件夾”和 “META-INF下的resoures文件夾”);
# 注:搜索文件時,自定義的文件夾的優先級要高於默認的四個文件夾
spring.resources.static-locations=file:D:/myFile/

# 提示:如果我們顯式地把自定義文件夾 和 默認的四個文件夾都寫出來,那么都會有效(此時,優先級 從左至右 依次降低)
#spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:D:/myFile/
 
---------------------
作者:justry_deng
來源:CSDN
原文:https://blog.csdn.net/justry_deng/article/details/81406752
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

 

多目錄問題

直接上配置,如下:

在springboot的application.properties的配置文件中加入:

spring.resources.static-locations=file:D://uploads
D://images   -->是你存放的外部文件的一個文件夾地址

然后加入一個這個問價你的映射:

spring.mvc.static-path-pattern=/**
注意:里面必須為   /**,不然你項目的其他靜態資源就會訪問不到

假如你的D://uploads下面兩個文件一個存放圖片的image文件里面有image.jpg,一個存放excel的excel文件里面有excel.xls

你就可以啟動項目然后在地址欄輸入:localhoset/images/image.jpg訪問image.jpg圖片

                                                       localhoset/excel/excel.xls訪問excel.xls文件

其實就是規定一個你項目外部文件的地址,然后在項目內部映射這個外部文件地址,因為springboot是內置tomac服務器
---------------------
作者:duangecho
來源:CSDN
原文:https://blog.csdn.net/duangecho/article/details/80099810
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM