1. 程式人生 > 實用技巧 >業務閘道器-配置

業務閘道器-配置

配置類圖

將專案中的配置聚合在一起,便於管理。

設計

下面是整理之後的與配置相關的資料物件關係圖,主要分為後臺管理以及閘道器配置相關。

實現

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在這裡