惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Privacy & Cybersecurity Law Blog
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
B
Blog RSS Feed
罗磊的独立博客
V
V2EX
V
Visual Studio Blog
博客园 - 叶小钗
W
WeLiveSecurity
小众软件
小众软件
K
Kaspersky official blog
美团技术团队
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
Martin Fowler
Martin Fowler
Recorded Future
Recorded Future
Project Zero
Project Zero
Hugging Face - Blog
Hugging Face - Blog
Engineering at Meta
Engineering at Meta
Security Latest
Security Latest
Microsoft Azure Blog
Microsoft Azure Blog
V
Vulnerabilities – Threatpost
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
Help Net Security
Help Net Security
博客园 - Franky
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Fortinet All Blogs
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Forbes - Security
Forbes - Security
M
MIT News - Artificial intelligence
H
Hacker News: Front Page
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
Spread Privacy
Spread Privacy
The Register - Security
The Register - Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
Google Online Security Blog
Google Online Security Blog
PCI Perspectives
PCI Perspectives
The Last Watchdog
The Last Watchdog
AI
AI
N
News | PayPal Newsroom
D
DataBreaches.Net
Cloudbric
Cloudbric
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 司徒正美
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog

博客园 - min.jiang

业务网关-分流插件 业务网关-操作手册 dubbo+zipkin调用链监控(二) Kafka Manager 简易RPC框架-SPI Spring Cache扩展:注解失效时间+主动刷新缓存(二) 从头开始搭建一个Spring boot+ActiveMQ高可用分布式环境 简易RPC框架-熔断降级机制 转:一篇讲线上优化查 CPU的脚本 简易RPC框架-上下文 简易RPC框架-客户端限流配置 简易RPC框架-过滤器机制 简易RPC框架-心跳与重连机制 简易RPC框架-私有协议栈 自动化测试:behave dubbo源码分析(二):超时原理以及应用场景 简单RPC框架-业务线程池 简单RPC框架-基于Consul的服务注册与发现 简易RPC框架-学习使用
业务网关-配置
min.jiang · 2020-08-02 · via 博客园 - min.jiang

配置类图

将项目中的配置聚合在一起,便于管理。

设计

下面是整理之后的与配置相关的数据对象关系图,主要分为后台管理以及网关配置相关。

实现

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