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

推荐订阅源

W
WeLiveSecurity
Jina AI
Jina AI
博客园 - 司徒正美
雷峰网
雷峰网
宝玉的分享
宝玉的分享
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园_首页
WordPress大学
WordPress大学
Google DeepMind News
Google DeepMind News
GbyAI
GbyAI
MyScale Blog
MyScale Blog
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
I
InfoQ
博客园 - Franky
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
Cyberwarzone
Cyberwarzone
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Schneier on Security
P
Privacy & Cybersecurity Law Blog
T
Threatpost
Cloudbric
Cloudbric
D
Docker
M
MIT News - Artificial intelligence
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Vercel News
Vercel News
Martin Fowler
Martin Fowler
J
Java Code Geeks
AWS News Blog
AWS News Blog
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
L
Lohrmann on Cybersecurity
Hacker News: Ask HN
Hacker News: Ask HN
Last Week in AI
Last Week in AI
S
Security @ Cisco Blogs
Help Net Security
Help Net Security
C
Cisco Blogs
V
V2EX
博客园 - 【当耐特】
I
Intezer
爱范儿
爱范儿
F
Fortinet All Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
P
Privacy International News Feed
IT之家
IT之家
L
LINUX DO - 最新话题
B
Blog RSS Feed
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

博客园 - 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在这里