怎么样可以实时知道配置文件变更了|Java 开发实战

简介: 现在很多的Java开发者都使用过Spring Cloud,那么在使用注册中心组件的时候,是不是都有自动服务发现,配置更新的功能。其底层的逻辑就是定时从配置中心去读取数据,并且更新内存中相关配置,并且通知监听的监听器更新内容。

开篇

现在很多的Java开发者都使用过Spring Cloud,那么在使用注册中心组件的时候,是不是都有自动服务发现,配置更新的功能。其底层的逻辑就是定时从配置中心去读取数据,并且更新内存中相关配置,并且通知监听的监听器更新内容。

那么接下来就要介绍一个好用的框架archaius, 如果你有以下问题或需求:

  1. 从配置中获取最新配置,加载到本地内存。
  2. 配置中心的配置发生变化,动态更新本地内存中的。
  3. 配置中心的配置发生变换,接收并做出响应。
  4. 动态变更数据源等。

使用前须知

  1. 默认读取的配置文件路径为 resource目录下的config.properties文件, 可用通过系统参数
archaius.configurationSource.additionalUrls=clssspath:application.properties
  1. 追加要读取的文件
  2. 默认定时读取配置内容为60000ms,即一分钟,可以通过系统参数
archaius.fixedDelayPollingScheduler.delayMills=100修改
  1. 改动了配置文件的内容,需要重新编译,因为程序运行时读取的是编译代码的目录,不是开发代码的目录

eb39b38cf83ef224715aa2dba050a3e.png

实例演示

  1. 引入依赖jar
<dependency>
    <groupId>com.netflix.archaius</groupId>
    <artifactId>archaius-core</artifactId>
    <version>0.7.7</version>
</dependency>
复制代码
  1. 调用相关api
// 获取对象实例
DynamicPropertyFactory instance = DynamicPropertyFactory.getInstance();
// 第一个参数是属性名,第二个是默认值
DynamicStringProperty nameProperty = instance.getStringProperty("myname", "default");
// 添加回调监听
nameProperty.addCallback(() -> System.out.println("name属性值发生变化:"));
// 2秒钟读一次
while (true) {
    System.out.println(nameProperty.get());
    TimeUnit.SECONDS.sleep(2);
}
复制代码

看效果

myname=我有名字了  
sdfdfdfsdfsd  
sdfdfdfsdfsd
name属性值发生变化:我有名字了我有名字了我有名字了
我有名字了 

这篇算是简单介绍下好用的框架和使用,如果想了解原理的可以自己阅读源码或者叫我安排~,主要是怕写太多你们看不完,就直接以使用为主,毕竟真正想了解底层是需要花费挺多时间的。


目录
相关文章
|
10月前
|
Java 关系型数据库 数据库
Java 项目实战教程从基础到进阶实战案例分析详解
本文介绍了多个Java项目实战案例,涵盖企业级管理系统、电商平台、在线书店及新手小项目,结合Spring Boot、Spring Cloud、MyBatis等主流技术,通过实际应用场景帮助开发者掌握Java项目开发的核心技能,适合从基础到进阶的学习与实践。
1400 4
|
10月前
|
缓存 前端开发 Java
基于最新 Java 技术栈的在线任务管理系统开发实战详解
本项目基于最新Java技术栈开发在线任务管理系统,涵盖任务创建、分配、跟踪、统计等功能。采用Spring Boot 3.2.x、React 18、PostgreSQL 16等主流技术,详解项目架构设计、核心功能实现及部署流程,助力掌握现代Java全栈开发技能。
518 6
|
8月前
|
安全 Java 开发者
告别NullPointerException:Java Optional实战指南
告别NullPointerException:Java Optional实战指南
361 119
|
10月前
|
Java API Maven
2025 Java 零基础到实战最新技术实操全攻略与学习指南
本教程涵盖Java从零基础到实战的全流程,基于2025年最新技术栈,包括JDK 21、IntelliJ IDEA 2025.1、Spring Boot 3.x、Maven 4及Docker容器化部署,帮助开发者快速掌握现代Java开发技能。
1769 1
|
9月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
1101 0
|
9月前
|
Java 开发者
Java并发编程:CountDownLatch实战解析
Java并发编程:CountDownLatch实战解析
600 100
|
10月前
|
数据采集 JSON Java
Java爬虫获取1688店铺所有商品接口数据实战指南
本文介绍如何使用Java爬虫技术高效获取1688店铺商品信息,涵盖环境搭建、API调用、签名生成及数据抓取全流程,并附完整代码示例,助力市场分析与选品决策。
|
10月前
|
消息中间件 Java 数据库
Java 基于 DDD 分层架构实战从基础到精通最新实操全流程指南
本文详解基于Java的领域驱动设计(DDD)分层架构实战,结合Spring Boot 3.x、Spring Data JPA 3.x等最新技术栈,通过电商订单系统案例展示如何构建清晰、可维护的微服务架构。内容涵盖项目结构设计、各层实现细节及关键技术点,助力开发者掌握DDD在复杂业务系统中的应用。
1834 0
|
8月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
9月前
|
人工智能 Java API
Java AI智能体实战:使用LangChain4j构建能使用工具的AI助手
随着AI技术的发展,AI智能体(Agent)能够通过使用工具来执行复杂任务,从而大幅扩展其能力边界。本文介绍如何在Java中使用LangChain4j框架构建一个能够使用外部工具的AI智能体。我们将通过一个具体示例——一个能获取天气信息和执行数学计算的AI助手,详细讲解如何定义工具、创建智能体并处理执行流程。本文包含完整的代码示例和架构说明,帮助Java开发者快速上手AI智能体的开发。
3359 8