自定義application.yml配置項方式
我們現(xiàn)在在springboot中,極其簡單的配置就可以完成以前很復雜的配置,application.yml配置很不錯,閑著沒事噶,就研究了一下yml如何通過在yml文件中配置來自動加載一些配置,還有就是好奇他是怎么實現(xiàn)一點擊就跳轉(zhuǎn)到配置類中的。
1、加入配置依賴及maven插件
<!--配置注釋處理以來--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <version>2.6.4</version> </dependency> <!--maven 插件--> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </plugins>
2、元注解分析
我們寫一個外部的配置類,我們還要在配置類上邊加入兩個元注解 @Component
:組件注解,將該配置文件放到ioc容器中,@ConfigurationProperties
外部配置文件注解,表明這是一個外部的配置文件。
特別注意的是,我們配置的文件一定要放入到ioc容器中,否則的話@ConfigurationProperties
就會發(fā)現(xiàn)不了這個文件,從而報錯。
如下圖,我們點進去這個注解,看他是怎么定義的。
可以看到,下面的兩個屬性,并且都取了一個別名,也就是說,不管我們在指定value,還是 profix 屬性,我們可以看到,它們都是一個作用。都是有效的綁定對象的前綴。
3、配置文件
我們的這個配置文件就是說,當我們在yml中點擊配置屬性的時候跳轉(zhuǎn)的類。
下面是我寫的一個實體類配置,setter和getter方法我就不在下面列舉了。
@Component @ConfigurationProperties(prefix = "user") public class User { /** * Column: id * Type: INT */ private Integer id; /** * Column: username * Type: VARCHAR(12) */ private String username; /** * Column: phone * Type: BIGINT */ private Long phone;
配置好了之后呢,已經(jīng)要maven編譯一遍,不然不知道。
如下圖:
4、測試能不能用
如下圖可以看到,我們輸入user前綴的時候,就已經(jīng)將我們的配置項提示出來了。
說明我們的配置很成功。
5、怎么從配置里面取值并加載呢?
這個也是很簡單的,因為我們將我們的配置放到了ioc容器中了,要實現(xiàn)自動加載取值并實現(xiàn)某種邏輯。
我們將這個配置注入到我們需要執(zhí)行的方法或者類中,并將要需要自動執(zhí)行的邏輯或者類放入到ioc中。
第一:我們在配置中加入值
第二:編寫一個自動配置類
我這里就不做什么很復雜的邏輯了,就簡單輸出一下我取到的值,告訴其中的原理就行,要是有其他的邏輯就是按照這個原理來的。
@Configuration public class CommonConfig { @Autowired User user; @Bean public void get(){ System.out.println(user.getId()); } }
啟動一下,可以看到配置自動加載出來。
并輸出 出來了。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
使用Java實現(xiàn)MySQL數(shù)據(jù)鎖定的策略
在并發(fā)環(huán)境下,多個線程同時對MySQL數(shù)據(jù)庫進行讀寫操作可能會導致數(shù)據(jù)沖突和不一致的問題,為了解決這些并發(fā)沖突,我們可以采用數(shù)據(jù)鎖定策略來保證數(shù)據(jù)的一致性和完整性,下面將介紹如何使用Java實現(xiàn)MySQL數(shù)據(jù)鎖定策略,,需要的朋友可以參考下2023-08-08Springboot如何設置多數(shù)據(jù)源,隨時切換
這篇文章主要介紹了Springboot如何設置多數(shù)據(jù)源,隨時切換方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04Java格式化輸出詳細講解(printf、print、println、format等)
Java的格式化輸出等同于String.Format,與C有很大的相似,下面這篇文章主要給大家介紹了關于Java格式化輸出(printf、print、println、format等)的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-03-03springboot添加多數(shù)據(jù)源的方法實例教程
這篇文章主要給大家介紹了關于springboot添加多數(shù)據(jù)源方法的相關資料,在實際開發(fā)中經(jīng)常可能遇到在一個應用中可能要訪問多個數(shù)據(jù)庫多的情況,需要的朋友可以參考下2023-09-09SpringBoot Security前后端分離登錄驗證的實現(xiàn)
這篇文章主要介紹了SpringBoot Security前后端分離登錄驗證的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09