更替 @value 在修改配置之后,重新加载数据的方法

2024-05-01 09:58

本文主要是介绍更替 @value 在修改配置之后,重新加载数据的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 原理是:将数据库变量放在一个全局的Map中,通过get读取,写好一个方法,用来操作数据库配置项的加载,当每次数据库配置项更改后,调取这个方法就可以实现刷新效果

@Component
public class BizConf {private ReadWriteLock rwLock = new ReentrantReadWriteLock();private final Lock rl = rwLock.readLock();private final Lock wl = rwLock.writeLock();private HashMap<String, String> kvs = new HashMap<String, String>();private static Logger logger = LoggerFactory.getLogger(BizConf.class);@Autowiredprivate Handyman handyman;public String get(String k) {String r = "";rl.lock();try {r = kvs.get(k);} finally {rl.unlock();}return r;}@PostConstructpublic void refresh() {wl.lock();try {List<ProxyPropertiesT> proxyPropertiesTs = handyman.allProxyList();for (int i = 0; i < proxyPropertiesTs.size(); i++) {ProxyPropertiesT proxyPropertiesT = proxyPropertiesTs.get(i);String key = proxyPropertiesT.getProxyCode() + "_" + proxyPropertiesT.getConfigKey();String value = proxyPropertiesT.getConfigValue();if (StringUtils.isNotBlank(key) && StringUtils.isNotBlank(value)) {//ignore password base on security concernif(!key.contains("password")) {logger.info("load property. Key=" + key + ",Value=" + value);}kvs.put(key, value);}}List<SystemT> systemTs = handyman.allSystemConfig();for (int i = 0; i < systemTs.size(); i++) {SystemT systemT = systemTs.get(i);String key = systemT.getSystemKey();String value = systemT.getSystemValue();if (StringUtils.isNotBlank(key) && StringUtils.isNotBlank(value)) {logger.info("load property. Key=" + key + ",Value=" + value);kvs.put(key, value);}}} finally {wl.unlock();}}}

 

这篇关于更替 @value 在修改配置之后,重新加载数据的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/951387

相关文章

MyBatis与其使用方法示例详解

《MyBatis与其使用方法示例详解》MyBatis是一个支持自定义SQL的持久层框架,通过XML文件实现SQL配置和数据映射,简化了JDBC代码的编写,本文给大家介绍MyBatis与其使用方法讲解,... 目录ORM缺优分析MyBATisMyBatis的工作流程MyBatis的基本使用环境准备MyBati

IDEA与JDK、Maven安装配置完整步骤解析

《IDEA与JDK、Maven安装配置完整步骤解析》:本文主要介绍如何安装和配置IDE(IntelliJIDEA),包括IDE的安装步骤、JDK的下载与配置、Maven的安装与配置,以及如何在I... 目录1. IDE安装步骤2.配置操作步骤3. JDK配置下载JDK配置JDK环境变量4. Maven配置下

Springboot的自动配置是什么及注意事项

《Springboot的自动配置是什么及注意事项》SpringBoot的自动配置(Auto-configuration)是指框架根据项目的依赖和应用程序的环境自动配置Spring应用上下文中的Bean... 目录核心概念:自动配置的关键特点:自动配置工作原理:示例:需要注意的点1.默认配置可能不适合所有场景

Nginx中location实现多条件匹配的方法详解

《Nginx中location实现多条件匹配的方法详解》在Nginx中,location指令用于匹配请求的URI,虽然location本身是基于单一匹配规则的,但可以通过多种方式实现多个条件的匹配逻辑... 目录1. 概述2. 实现多条件匹配的方式2.1 使用多个 location 块2.2 使用正则表达式

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

前端bug调试的方法技巧及常见错误

《前端bug调试的方法技巧及常见错误》:本文主要介绍编程中常见的报错和Bug,以及调试的重要性,调试的基本流程是通过缩小范围来定位问题,并给出了推测法、删除代码法、console调试和debugg... 目录调试基本流程调试方法排查bug的两大技巧如何看控制台报错前端常见错误取值调用报错资源引入错误解析错误

Springboot控制反转与Bean对象的方法

《Springboot控制反转与Bean对象的方法》文章介绍了SpringBoot中的控制反转(IoC)概念,描述了IoC容器如何管理Bean的生命周期和依赖关系,它详细讲解了Bean的注册过程,包括... 目录1 控制反转1.1 什么是控制反转1.2 SpringBoot中的控制反转2 Ioc容器对Bea

C++实现回文串判断的两种高效方法

《C++实现回文串判断的两种高效方法》文章介绍了两种判断回文串的方法:解法一通过创建新字符串来处理,解法二在原字符串上直接筛选判断,两种方法都使用了双指针法,文中通过代码示例讲解的非常详细,需要的朋友... 目录一、问题描述示例二、解法一:将字母数字连接到新的 string思路代码实现代码解释复杂度分析三、

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

Keepalived+Nginx双机配置小结

《Keepalived+Nginx双机配置小结》本文主要介绍了Keepalived+Nginx双机配置小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1.1 软硬件要求1.2 部署前服务器配置调优1.3 Nginx+Keepalived部署1.3