SpringBoot 複雜配置資訊讀取
前言
本文接上一篇部落格Spring Boot讀取配置檔案自定義資訊
以上場景適用於比較簡單的屬性檔案。然而,在實際工作中我們會需要這樣的配置:配置檔案的key中也包含有變數資訊。如下所示:
tran.subtype.交易子型別.id=xxx
tran.subtype.交易子型別.infoTableName=xxx
tran.subtype.交易子型別.msgTemplate=xxx
tran.subtype.交易子型別.receiverSASMap.欄位名=SAS結果對映值
這裡支援配置多種交易子型別,並分別指定id, infoTableName和msgTemplate屬性的值。此外,還有一個map型別的配置:receiverSASMap。該map用於配置SAS規則引擎返回結果和資料庫表欄位的對應關係。即在properties檔案的key中存在兩個變數:上圖中的交易子型別
和欄位名
。
實際的屬性檔案如下所示:
tran.subtype.toUser.id=0001
tran.subtype.toUser.infoTableName=Table1
tran.subtype.toUser.receiverSASMap.RETAILER_INFO=1,2
tran.subtype.toUser.receiverSASMap.BRANCH_INFO=2
tran.subtype.toUser.msgTemplate=ABCtoUser
tran.subtype.toPublic.id=0002
tran.subtype.toPublic.infoTableName=Table2
tran.subtype.toPublic.receiverSASMap.RETAILER_INFO=3,4
tran.subtype.toPublic.receiverSASMap.BRANCH_INFO=5
tran.subtype.toPublic.msgTemplate=DEFtoPublic
我們如何編寫可以承載此類資訊的bean呢?
Bean的編寫
@Component
@ConfigurationProperties(prefix = "tran")
public class TranConfigBean {
public static class Type {
private String id;
private String infoTableName;
private String msgTemplate;
private Map<String, String> receiverSASMap;
// Setters and getters ...
}
private Map<String, Type> subtype;
// Setters and getters.
}
這裡需要解釋下@ConfigurationProperties
修飾的bean中map型別成員變數如何靈活運用。
複雜屬性匹配不容易理解的地方在於Map的變數名,key和value是怎麼對應到properties上的。對於value型別為簡單型別的map而言:
Map<String, String> demoMap;
對應的屬性檔案為:
# key1和key2會被對映為demoMap的key值
prefix.demoMap.key1=value1
prefix.demoMap.key2=value2
其中prefix
為@ConfigurationProperties
中prefix的值。
如果Map中value的型別為複雜型別(bean, list或map):
Map<String, Student> demoMap;
// ...
public static class Student {
private Integer id;
private String name;
// setters and getters
}
對應的屬性檔案為:
# key1和key2會被對映為demoMap的key值
prefix.demoMap.key1.id=001
prefix.demoMap.key1.name=paul
prefix.demoMap.key2.id=002
prefix.demoMap.key2.name=peter
總結
如果在properties檔案配置項的key中使用變數的話,需要在對應的bean內定義map。屬性檔案的書寫規則為:
prefix.mapName.keyN=valueN
字首.map名稱.keyN=valueN
相關文章
- springboot讀取配置檔案Spring Boot
- SpringBoot讀取配置資料的幾種方式Spring Boot
- spring boot(二)配置資訊的讀取Spring Boot
- SpringBoot專案中獲取配置檔案的配置資訊Spring Boot
- 補習系列(10)-springboot 之配置讀取Spring Boot
- SpringBoot配置檔案讀取過程分析Spring Boot
- 【springboot讀取配置檔案】@ConfigurationProperties、@PropertySource和@ValueSpring Boot
- springboot2.3.0讀取配置檔案中文亂碼+阿里簡訊服務Spring Boot阿里
- 01.SpringBoot開發雜記-使用工具類,靜態讀取配置檔案中的配置的寫法Spring Boot
- SpringBoot——專案啟動時讀取配置及初始化資源Spring Boot
- springboot 執行 jar 包讀取外部配置檔案Spring BootJAR
- Python讀取YAML配置資料PythonYAML
- python讀配置檔案配置資訊Python
- Asp.net Core 和類庫讀取配置檔案資訊ASP.NET
- spring boot學習(6)— 配置資訊及其讀取優先順序Spring Boot
- SpringBoot配置檔案敏感資訊加密方案Spring Boot加密
- 關於Asp.net core配置資訊讀取的原始碼分析梳理ASP.NET原始碼
- Python讀取Ansible playbooks返回資訊Python
- Spring-讀取配置Spring
- 多種方式讀取 MySQL 資料庫配置MySql資料庫
- SpringBoot--SpringBoot 讀取Properties檔案(結合JDBC)Spring BootJDBC
- 微服務複雜查詢之快取策略微服務快取
- DDD之理解複雜度、尊重複雜度、掌控複雜度複雜度
- 資訊學奧賽複賽複習01-CSP-J2019-01-字元、字元陣列、字串、string、字串讀取字元陣列字串
- SpringBoot讀取yml的一個bugSpring Boot
- springboot:讀取application.yml檔案Spring BootAPP
- go配置檔案讀取Go
- viper 讀取配置檔案
- IOC - 讀取配置檔案
- IntelliJ IDEA java maven專案讀取配置檔案資訊 java.util.ResourceBundle 方式IntelliJIdeaJavaMaven
- 4.SpringBoot中採用什麼方式進行配置專案檔案?SpringBoot如何讀取配置檔案中連線資料庫的資料?嘻哈的簡寫筆記——SpringBootSpring Boot資料庫筆記
- SpringBoot讀取自定義配置檔案Spring Boot
- 複雜SQL構造資料:SQL
- 美團二面:SpringBoot讀取配置優先順序順序是什麼?Spring Boot
- SpringBoot+Redis實現介面級別快取資訊Spring BootRedis快取
- (slam工具)2 從照片讀取GNSS資訊SLAM
- 精讀《維護好一個複雜專案》
- 使用JavaCV實現讀取視訊資訊及自動擷取封面圖Java