將項目中的配置聚合在一塊兒,便於管理。css
下面是整理以後的與配置相關的數據對象關係圖,主要分爲後臺管理以及網關配置相關。java
spring對於屬性的注入方面主要有如下2種方式:node
單一屬性方式,@Valuepython
批量屬性方式,@ConfigurationPropertiesgit
上面2種方式各有特色github
@Value | @ConfigurationProperties | |
---|---|---|
功能 | 單一屬性配置 | 批量屬性配置 |
是否支持鬆散綁定 | 不支持 | 支持 |
是否支持SPEL | 支持 | 不支持 |
是否支持JSR303 | 不支持 | 支持 |
是否支持複雜類型 | 不支持 | 支持 |
diablo網關選擇了批量屬性方式,以對象的方式呈現配置。主要爲是後臺管理相關配置以及網關相關配置,而後還有一些公共的中間件相關的配置:redis,zookeeper,apollo等。web
一、配置入口:DiabloConfigredis
建立一個DiabloConfig的類,解釋下類上面的註解:spring
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在這裏