業務網關-配置


配置類圖

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

設計

下面是整理之后的與配置相關的數據對象關系圖,主要分為后台管理以及網關配置相關。

實現

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM