springboot如何讀區配置文件
㈠ SpringBoot 配置文件詳解(告別XML)
快速學會和掌握 SpringBoot 的 核心配置文件的使用。
SpringBoot 提供了豐富的 外部配置 ,常見的有:
其中核心配置文件我們並不陌生,主要以Key-Value的形式進行配置,其中屬性Key主要分為兩種:
在 application.properties 添加配置如下:
① 添加數據源信息
在 application.propertis 添加配置如下:
① 添加認證信息,其中 socks.indentity.* 是自定義的屬性前綴。
② 添加隨機值,其中spring.test.* 是自定義的屬性前綴。
使用方法: @ConfigurationProperties(prefix = "spring.datasource")
使用說明:提供 Setter方法 和 標記組件 Component
如何驗證是否成功讀取配置?答:這里可以簡單做個驗證,注入 MyDataSource ,使用 Debug 模式可以看到如下信息:
使用方法: @Value("spring.datasource.*")
使用說明:提供 Setter方法 和 標記組件 Component
注意事項:@Value不支持注入靜態變數,可間接通過Setter注入來實現。
關於兩者的簡單功能對比:
顯然,前者支持松綁定的特性更強大,所以在實際開發中建議使用@ConfigurationProperties來讀取自定義屬性。
SpringBoot 默認會載入這些路徑載入核心配置文件,按優先順序從高到低進行排列:具體規則詳見 ConfigFileApplicationListener
如果存在多個配置文件,則嚴格按照優先順序進行覆蓋,最高者勝出:
舉個簡單的例子,例如再上述位置都有一個application.properties ,並且每個文件都寫入了server.port=xx (xx分別是9001,9002,9003,9004),在啟動成功之後,最終應用的埠為:9004。圖例:
如果想修改默認的載入路徑 或者 調改默認的配置文件名,我們可以藉助命令行參數進行指定,例如:
YAML是JSON的一個超集,是一種可輕松定義層次結構的數據格式。
答: 因為配置文件這東西,結構化越早接觸越規范越好。這里推薦閱讀阮一峰老師寫的 YAML語言教程 ,寫的很簡單明了。
引入依賴: 在POM文件引入 snakeyaml 的依賴。
使用說明: 直接在類路徑添加 application.yml 即可。
例如下面這兩段配置是完全等價的:
① 在 application.yml 配置數據源:
② 在 application.properties 配置數據源:
在項目的實際開發中,我們往往需要根據不同的環境來載入不同的配置文件。例如生產環境,測試環境和開發環境等。此時,我們可以藉助 Profiles 來指定載入哪些配置文件。例如:
溫馨提示:如果spring.profiles.active指定了多個配置文件,則按順序載入,其中最後的優先順序最高,也就是最後的會覆蓋前者。
使用方法:
使用Maven插件打包好項目,然後在當前路徑,執行DOS命令: java -jar demo.jar --server.port=8081 ,在控制台可看到應用埠變成了8081。
實現原理:
默認情況下,SpringBoot會將這些命令行參數轉化成一個 Property ,並將其添加到 Environment 上下文。
溫馨提示:
由於命令行參數優先順序非常之高,基本高於所有常見的外部配置,所以使用的時候要謹慎。詳見 PropertySource 執行順序 。
關閉方法:
如果想禁用命令行屬性,可以設置如下操作:springApplication.setAddCommandLineProperties(false)
㈡ springboot讀取不到引入配置文件值
你好,如果讀取不到的話,應該是還沒有那個許可權吧。這個時候您其實是可以直接去找一下有相關許可權的人獲取一下。
㈢ spring boot 過濾器 怎麼讀取配置文件
1.用光碟或U盤PE進入以後, 用分區工具-點C盤-激活當前分區-設為活動分區2..找一張安裝光碟(非GHOST版),在BIOS中設置光碟機為第一啟動,然後當用光碟啟動起來以後,選擇語言,一直往下走,在左下角你就會看到有一個修復計算機,點擊一下,在彈出的對話框中,點擊修復計算機,這樣就開始修復了,修復完成後,然後重啟
㈣ 如何解決springboot讀取配置文件的中文亂碼
在application.properties中填寫中文信息,在讀取該文件時會出現中文亂碼問題。
比如:application.properties內容:
student.name=小康
student.age=15
㈤ 如何在SpringBoot下讀取自定義properties配置文件
創建個properties文件,然後向裡面寫配置就可以了,然後寫個類去讀取就可以了!
㈥ springboot核心註解是什麼
1、##@SpringBootConfiguration:讀取配置文件,配置文件的路徑是當前根目錄(src/main/resources/application.yml等)。
2、##EnableAutoConfiguration:開啟自動配置,掃描當前的所有依賴的jar包,發現新的依賴出現將會將會根據依賴完各種自動配置。
(6)springboot如何讀區配置文件擴展閱讀
SpringBoot基於所添加的依賴,去「猜測」你想要如何配置Spring。比如引入了spring-boot-starter-web,而這個啟動器中添加了tomcat、SpringMVC的依賴。
此時自動配置就知道是要開發一個web應用,所以就幫完成了web及SpringMVC的默認配置了!我們使用SpringBoot構建一個項目。
㈦ 請教,如何spring boot里動態讀取配置文件
public void getCsisUrl(){
Properties p = new Properties();
try{
FileInputStream in = new FileInputStream(ServletActionContext.getRequest().getRealPath("/WEB-INF/classes/demo.properties"));
p.load(in);
in.close();
String csisUrl= p.getProperty("csisUrl");
//System.out.println(csisUrl);
}catch(Exception e){
e.printStackTrace();
}
}
㈧ springboot怎麼讀取指定的配置文件中文亂碼
方法一:找一台Windows版本相同且顯示正常的機器,依下列步驟進行: 1.在正常機器上選擇「開始」→「運行」,在對話框中鍵入「regedit」,打開注冊表編輯器; 2.請將游標定位到「HKEY_LOCAL_MACHINE Fontassoc」,然後選擇「注冊表」→「導出注冊表文件」,再選擇「分支」,導出該分支注冊表信息到文件(如ZT.REG)中; 3.把ZT.REG文件拷貝到你那顯示亂碼的機器上,方法是:在顯示亂碼的機器上運行「regedit」,打開注冊表編輯器,選擇「注冊表」→「導入注冊注冊表」,把ZT.REG文件導入注冊表中即可。 方法二:如果你找不到一台與你的Windows版本相同且顯示正常的機器,則需要手工恢復字體部分的注冊表 項,其步驟是: 1.首先在顯示亂碼的機器上選擇「開始」→「運行」,在對話框中鍵入「regedit」,打開注冊表編輯器; 2.選擇「HKEY_LOCAL_MACHINESystem 」,正常情況下,會有Associated DeaultFonts、Associated CharSet兩個文件夾,其正確的內容應是: 子目錄內容 中文Win98 中文Win98(OEM版) 中文Win2000 Associated CharSet ANSI(00)=「yes」 GB2312(86)=「yes」 DEN(FF)=「yes」 SYMBOL(02)=「no」 ANSI(00)=「yes」 GB2312(86)=「yes」 OEM(FF)=「yes」 SYMBOL(02)=「no」 ANSI(00)=「yes」 OEM(FF)=「yes」 SYMBOL(02)=「no」 Associated DefaultFonts AssocSystemFont=「simsun.ttf」 FontPackageDecorative=「宋體」 FontPackageDontcare=「宋體」 FontPackageModern=「宋體」 FontPackageRoman=「宋體」 FontPackageScript=「宋體」 FontPackageSwiss=「宋體」 或 AssocSystemFont=「simsun.ttf」 FontPackage=「新宋體」 FontPackageDecorative=「新宋體」 FontPackageDontcare=「新宋體」 FontPackageModern=「新宋體」 FontPackageRoman=「新宋體」 FontPackageScript=「新宋體」 FontPackageSwiss=「新宋體」 3.當出現漢字亂碼時,上述兩個文件夾中的內容就會不完整,有的沒有Associated CharSet文件夾或其中的內容殘缺不全;有的 Associated DefaulFonts下的內容殘缺。如果遇到這種情況怎麼辦呢?其實你只要打開注冊表編輯器,在 「HKEY_LOCAL_」下,根據以上的正確內容恢復即可。
㈨ java 中的spring boot框架是怎麼讀取application.properties的
web.xml是來啟動框架,然後就是代理來讀取配置文件,之後根據文件到對應的操作
㈩ SpringBoot 如何優雅讀取配置文件10分鍾教你搞定
很多時候我們需要將一些常用的配置信息比如阿里雲 oss 配置、發送簡訊的相關信息配置等等放到配置文件中。
下面我們來看一下 Spring 為我們提供了哪些方式幫助我們從配置文件中讀取這些配置信息。
application.yml 內容如下:
wuhan2020: 2020年初武漢爆發了新型冠狀病毒,疫情嚴重,但是,我相信一切都會過去!武漢加油!中國加油!my-profile:name: Guide哥email: [email protected]:location: 湖北武漢加油中國加油books: -name: 天才基本法description: 二十二歲的林朝夕在父親確診阿爾茨海默病這天,得知自己暗戀多年的校園男神裴之即將出國深造的消息——對方考取的學校,恰是父親當年為她放棄的那所。 -name: 時間的秩序description: 為什麼我們記得過去,而非未來?時間「流逝」意味著什麼?是我們存在於時間之內,還是時間存在於我們之中?卡洛·羅韋利用詩意的文字,邀請我們思考這一亘古難題——時間的本質。 -name: 了不起的我description: 如何養成一個新習慣?如何讓心智變得更成熟?如何擁有高質量的關系? 如何走出人生的艱難時刻?
1.通過 @value 讀取比較簡單的配置信息
使用 @Value("${property}") 讀取比較簡單的配置信息:
@Value("${wuhan2020}")String wuhan2020;
需要注意的是 @value這種方式是不被推薦的,Spring 比較建議的是下面幾種讀取配置信息的方式。
2.通過@ConfigurationProperties讀取並與 bean 綁定
LibraryProperties 類上加了 @Component 註解,我們可以像使用普通 bean 一樣將其注入到類中使用。
importlombok.Getter;importlombok.Setter;importlombok.ToString;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.context.annotation.Configuration;importorg.springframework.stereotype.Component;importjava.util.List;@Component@ConfigurationProperties(prefix ="library")@Setter@Getter@{privateString location;privateList books;@Setter@Getter@ToStringstaticclassBook{ String name; String description; }}
這個時候你就可以像使用普通 bean 一樣,將其注入到類中使用:
packagecn.javaguide.readconfigproperties;importorg.springframework.beans.factory.InitializingBean;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;/** *@authorshuang.kou */@ntsInitializingBean{privatefinalLibraryProperties library;(LibraryProperties library){this.library = library; }publicstaticvoidmain(String[] args){ SpringApplication.run(.class,args); }@(){ System.out.println(library.getLocation()); System.out.println(library.getBooks()); }}
控制台輸出:
湖北武漢加油中國加油[LibraryProperties.Book(name=天才基本法, description........]
3.通過@ConfigurationProperties讀取並校驗
我們先將application.yml修改為如下內容,明顯看出這不是一個正確的 email 格式:
my-profile:name: Guide哥email: koushuangbwcx@
ProfileProperties 類沒有加 @Component 註解。我們在我們要使用ProfileProperties 的地方使用@
EnableConfigurationProperties注冊我們的配置 bean:
importlombok.Getter;importlombok.Setter;importlombok.ToString;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.stereotype.Component;importorg.springframework.validation.annotation.Validated;importjavax.validation.constraints.Email;importjavax.validation.constraints.NotEmpty;/***@authorshuang.kou*/@Getter@Setter@ToString@ConfigurationProperties("my-profile")@{@NotEmptyprivateString name;@Email@NotEmptyprivateString email;//配置文件中沒有讀取到的話就用默認值privateBooleanhandsome =Boolean.TRUE;}
具體使用:
packagecn.javaguide.readconfigproperties;importorg.springframework.beans.factory.InitializingBean;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.boot.context.properties.EnableConfigurationProperties;/** *@authorshuang.kou */@SpringBootApplication@EnableConfigurationProperties(ProfileProperties.class){privatefinalProfileProperties profileProperties;(ProfileProperties profileProperties){this.profileProperties = profileProperties; }publicstaticvoidmain(String[] args){ SpringApplication.run(.class,args); }@(){ System.out.println(profileProperties.toString()); }}
因為我們的郵箱格式不正確,所以程序運行的時候就報錯,根本運行不起來,保證了數據類型的安全性:
Binding to target org.springframework.boot.context.properties.bind.BindException:Failedtobindpropertiesunder'my-profile'to cn.javaguide.readconfigproperties.ProfileProperties failed:Property:my-profile.emailValue:koushuangbwcx@Origin:classpathresource[application.yml]:5:10Reason:mustbeawell-formedemailaddress
我們把郵箱測試改為正確的之後再運行,控制台就能成功列印出讀取到的信息:
ProfileProperties(name=Guide哥, [email protected], handsome=true)
4.@PropertySource讀取指定 properties 文件
importlombok.Getter;importlombok.Setter;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.PropertySource;importorg.springframework.stereotype.Component;@Component@PropertySource("classpath:website.properties")@Getter@SetterclassWebSite{@Value("${url}")privateString url;}
使用:
@Autowiredprivate WebSite webSite;System.out.println(webSite.getUrl());//https://javaguide.cn/
5.題外話:Spring 載入配置文件的優先順序
Spring 讀取配置文件也是有優先順序的,直接上圖:
原文鏈接:https://www.toutiao.com/a6791445278911103500/?log_from=7f5fb8f9b4b47_1640606437752