業務閘道器-配置
阿新 • • 發佈:2020-08-02
配置類圖
將專案中的配置聚合在一起,便於管理。
設計
下面是整理之後的與配置相關的資料物件關係圖,主要分為後臺管理以及閘道器配置相關。
實現
spring對於屬性的注入方面主要有以下2種方式:
-
單一屬性方式,@Value
-
批量屬性方式,@ConfigurationProperties
上面2種方式各有特點
@Value | @ConfigurationProperties | |
---|---|---|
功能 | 單一屬性配置 | 批量屬性配置 |
是否支援鬆散繫結 | 不支援 | 支援 |
是否支援SPEL | 支援 | 不支援 |
是否支援JSR303 | 不支援 | 支援 |
是否支援複雜型別 | 不支援 | 支援 |
diablo閘道器選擇了批量屬性方式,以物件的方式呈現配置。主要為是後臺管理相關配置以及閘道器相關配置,然後還有一些公共的中介軟體相關的配置:redis,zookeeper,apollo等。
1、配置入口:DiabloConfig
建立一個DiabloConfig的類,解釋下類上面的註解:
- @Data,這是一個語法糖,用來生成屬性的get,set方法
- @Configuration,表明這是一個配置類
- @Component,表明這是一個元件,會在其它地方被注入依賴
- @ConfigurationProperties,批量屬性注入。
prefix是指在application.yml中的屬性字首;ignoreInvalidFields是指當屬性匹配發生錯誤時是否忽略,如果配置成false,有可能會拋錯誤。
@Data
@Configuration
@Component("diabloConfig")
@ConfigurationProperties(prefix = "diablo",ignoreInvalidFields = true)
public class DiabloConfig implements Serializable {
/**
* 後臺管理配置
*/
private Admin admin;
/**
* 閘道器配置
*/
private Web web;
}
2、application.yml :配置上對應的屬性值
diablo:
web:
keepAliveUpstream:
scanTimeMillisecond: 1000
disruptor:
bufferSize: 2048
threadSize: 1
accessLog:
enable: true
percentagy: 100
redis:
master: common
nodes: 192.168.1.10:26379
pwd: 123
sync:
strategy: http
url: http://localhost:8887
3、使用
只需要在使用的地方注入上面的配置類元件即可開始工作。
@Autowired
private DiabloConfig diabloConfig;
閘道器專案開源
以上內容基於業務閘道器的一個小模組,詳細請看這裡:diablo在這裡