将项目中的配置聚合在一块儿,便于管理。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在这里