原兼容Spring Boot 配置類參數綁定的工具類 SpringBootBindUtil

為了讓我提供的通用 Mapper 的 boot-starter 同時兼容 Spring Boot 1.x 和 2.x,增加了這麼一個工具類。

在 Spring Boot 中,能夠直接注入 XXProperties 類的地方不需要使用這個工具類。

但是在 Spring 的接口和啟動流程設計中,有些情況下只能通過 EnvironmentAware 接口得到 Environment 對象,此時你想得到 XXProperties 類沒有更好的辦法。

也許有人直接從Environment 對象中遍歷獲取所有的配置信息,但是有一個無法完美解決的問題就是 relax 值,例如 first-namefirstName, FIRST_NAME 都可以代表同一個參數,在自己代碼中很難處理這種情況。

通用 Mapper 在兼容兩者過程中遇到過很多 BUG,這一次通過一個工具類解決了這個問題。

在 Spring Boot 1.x 中,可以通過下面代碼綁定參數到對象:

原兼容Spring Boot 配置類參數綁定的工具類 SpringBootBindUtil

Spring Boot 2.x 中,綁定更簡單,如下:

原兼容Spring Boot 配置類參數綁定的工具類 SpringBootBindUtil

上面這兩段代碼也是最近才找到,要不然這個功能會出現的更早。給大家推薦一個Java交流群:874811168 進群即可免費領取資料

由於上面的兩處代碼都在 spring-boot.jar 中,因此編譯時不能同時依賴兩個不同的版本,而且為了方便以後項目依賴從 1.x 升級到 2.x,因此針對上面兩處代碼全部使用反射實現。

簡單用法如下:

原兼容Spring Boot 配置類參數綁定的工具類 SpringBootBindUtil

至此通過 environment 就能得到想要的配置類了。

喜歡的朋友點點關注


分享到:


相關文章: