这篇文章主要讲解了“高效率配置管理的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“高效率配置管理的方法有哪些”吧!

Spring-boot 基于数据库的配置管理

好的配置管理 是部署的第一步。

配置管理 做了什么

通常,应用的 配置 在不同 部署 (预发布、生产环境、开发环境等等)间会有很大差异

这其中包括:

数据库,Redis,以及其他 后端服务 的配置

第三方服务的Key,如 存储、推送等

每份部署特有的配置,如域名等

配置管理的 目标

一份基准代码,多份部署,在环境中存储配置
配置文件随着纳入版本控制系统提交,引起多个版本Profile管理。

统一管理
如果不统一管理,需要在多处修改配置,容易造成遗忘,也增加学习成本。

密钥(配置)安全
判断一个应用是否正确地将配置排除在代码之外,一个简单的方法是看该应用的基准代码是否可以立刻开源,而不用担心会暴露任何敏感的信息。

配置管理的现行方案方案理由可行性Configuration代码文件代码和配置混在一起,打包后,无法适配多个部署环境。×配置文件例如Spring-boot.profile管理,node.js.env√基于数据库管理非常适用于第三方key的配置,内部配置 并不便捷√基于配置服务Spring Cloud Config,nacos等配置服务√基于数据库的配置管理

Spring-boot 应用配置管理方案(优化版)

鸿蒙官方战略合作共建——HarmonyOS技术社区

配置 Application.yml

配置DB 连接的环境变量 覆盖 原Application.yml 的数据库连接变量。

摘自: 12-Factor推荐将应用的配置存储于 环境变量 中( env vars, env )。环境变量可以非常方便地在不同的部署间做修改,却不动一行代码;与配置文件不同,不小心把它们签入代码库的概率微乎其微;与一些传统的解决配置问题的机制(比如 Java 的属性配置文件)相比,环境变量与语言和系统无关。

鸿蒙官方战略合作共建——HarmonyOS技术社区

基于数据库管理(jm-settings)

2.1 设计 Key-Value 表

CREATETABLE`t_base_settings`(`id`int(11)unsignedNOTNULLAUTO_INCREMENT,`keyword`varchar(255)COLLATEutf8mb4_unicode_ciDEFAULTNULLCOMMENT'关键词,PAY.ALIPAY.MP',`content`textCOLLATEutf8mb4_unicode_ciCOMMENT'配置内容',`created`bigint(20)DEFAULTNULL,`updated`bigint(20)DEFAULTNULL,`deleted`int(1)DEFAULT'0',PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_ciCOMMENT='设置表';

2.2 Spring-boot @Bean 注入

声明Property

/***华为OBS配置*@author<ahref="https://github.com/keepcleargas/">keepcleargas</a>*@version1.0Createdin2021/03/2310:56*/@DatapublicclassHuaweiObsProperties{publicstaticfinalStringKEY="huawei.obs";privateStringaccessKey;privateStringsecretKey;privateStringendPoint;/***失效时间(分钟)*/privateLongduration=3600L;/***buckets*/privateList<Bucket>buckets;@DatapublicstaticfinalclassBucket{privateIntegertype;privateStringbucketName;}@JsonIgnorepublicStringgetBucketNameByType(Integertype){for(Bucketbucket:buckets){if(type.equals(bucket.getType())){returnbucket.getBucketName();}}thrownewIllegalArgumentException("Bucket配置不全!");}}

Bean注入类

/***HuaweiObsPropertiesBean配置类*@author<ahref="https://github.com/keepcleargas/">keepcleargas</a>*@version1.0Createdin2021/03/2311:01*/@Slf4j@ConfigurationpublicclassHuaweiObsConfiguration{@ResourceBaseSettingsServicebaseSettingsService;@Bean(name="huaweiObsProperties")publicHuaweiObsPropertiesgetHuaweiObsProperties(){HuaweiObsPropertieshuaweiObsProperties=baseSettingsService.getObjectByKeyword(HuaweiObsProperties.KEY,HuaweiObsProperties.class);returnhuaweiObsProperties==null?newHuaweiObsProperties():huaweiObsProperties;}}

Bean注入使用

@Slf4j@ServicepublicclassHuaweiObsService{@ResourceHuaweiObsPropertieshuaweiObsProperties;//todo调用即可}开源地址项目名描述地址jm-settings基于 DB 的配置管理核心库https://github.com/jimoos-cn/...huawei-obs基于jm-settings实现的华为obs 配置管理https://github.com/jimoos-cn/...

感谢各位的阅读,以上就是“高效率配置管理的方法有哪些”的内容了,经过本文的学习后,相信大家对高效率配置管理的方法有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!