業務網關-配置

配置類圖

將項目中的配置聚合在一塊兒,便於管理。css

設計

下面是整理以後的與配置相關的數據對象關係圖,主要分爲後臺管理以及網關配置相關。java

實現

spring對於屬性的注入方面主要有如下2種方式:node

  • 單一屬性方式,@Valuepython

  • 批量屬性方式,@ConfigurationPropertiesgit

上面2種方式各有特色github

  @Value @ConfigurationProperties
功能 單一屬性配置 批量屬性配置
是否支持鬆散綁定 不支持 支持
是否支持SPEL 支持 不支持
是否支持JSR303 不支持 支持
是否支持複雜類型 不支持 支持

diablo網關選擇了批量屬性方式,以對象的方式呈現配置。主要爲是後臺管理相關配置以及網關相關配置,而後還有一些公共的中間件相關的配置:redis,zookeeper,apollo等。web

一、配置入口:DiabloConfigredis

建立一個DiabloConfig的類,解釋下類上面的註解:spring

  • @Data,這是一個語法糖,用來生成屬性的get,set方法
  • @Configuration,代表這是一個配置類
  • @Component,代表這是一個組件,會在其它地方被注入依賴
  • @ConfigurationProperties,批量屬性注入。

prefix是指在application.yml中的屬性前綴;ignoreInvalidFields是指當屬性匹配發生錯誤時是否忽略,若是配置成false,有可能會拋錯誤。app

@Data
@Configuration
@Component("diabloConfig")
@ConfigurationProperties(prefix = "diablo",ignoreInvalidFields = true)
public class DiabloConfig implements Serializable {

    /**
     * 後臺管理配置
     */
    private Admin admin;

    /**
     * 網關配置
     */
    private Web web;

}

二、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

三、使用

只須要在使用的地方注入上面的配置類組件便可開始工做。

@Autowired
 private DiabloConfig diabloConfig;

網關項目開源

以上內容基於業務網關的一個小模塊,詳細請看這裏:diablo在這裏

相關文章
相關標籤/搜索