java获取apollo的配置(java读取apollo配置)

本文目录一览:

springboot中获取apollo或者nacos里的配置文件

常规的,在springboot中一般只需要拿appolo或者nacos里配置的属性就够了。

但是也有一些很特殊的场景,要拿到appolo或者nacos里配置的文件,比如有个第三方jar包提供的方法中,要求把properties配置文件路径传进去来初始化第三方jar包里需要用到的东西,这时候一般是把properties文件配置到appolo或者nacos里,但是如何直接拿到这个properties文件而不是里面的属性值呢?

apollo里直接提供了把配置的相应namespace直接转换成file的方法:

再把这个content转换成输入流就可以用了

如果只是想拿到里面某个namespace的属性,则可以:

key为属性key名,c.getPropertyNames()方法能拿到该namespace下面的所有属性,返回一个SetString集合,再遍历这个集合就能拿到所有属性。

nacos跟apollo的处理思路有点不一样,找了很多资料,貌似没有找到nacos里直接获取整个获取配置文件的方法,后面如果有同学找到了这个方法记得留言提醒我。

nacos在springboot启动的时候已经把所有配置文件都注入到了spring里。

第一种:可以直接用注解 @Value(“${key}”)来获取配置好的属性值

第二种:在java里获取:

新建SpringContextUtil实现org.springframework.context.ApplicationContextAware这个接口:

在启动类用注解导入该类:@Import({SpringContextUtil.class})

利用org.springframework.core.env.Environment类来直接获取属性:

如果有这样一个需求,有个第三方的jar包要求初始化配置好的properties文件,只给了properties文件的路径传参,只能用文件路径的方式初始化这个第三方jar包,那么我们就必须保证项目里或者其他文件夹有这个properties文件才可以,而这些配置如果经常要变的话,最好也是配置在nacos或者apollo,如此看来,apollo是可以直接把配置的相应namespace直接转换成file,而nacos大概只能把所有属性手工生成一个新的properties文件来保存到本地了。

这个生成文件的过程,要在springboot启动之后立即执行:

那我们就要建一个配置类实现org.springframework.beans.factory.InitializingBean这个接口,重写afterPropertiesSet()方法:把需要启动后执行的逻辑放在里面,下面是一个示例:

把这个类在启动类里注入:

如此,在启动的时候就可以在本地生成一个cssconfig.properties文件了。

于是乎就可以类似这样调用第三方接口(根据第三方jar包来定):

Apache Apollo java环境详细怎么设置

在Element下的列表框中选择你要更改的内容。

列表框中有三个大类,Java、Javadoc、Comments。

如果感觉不知道如Strings、Classes等怎样设置色彩值才能和Visual

Studio中的色彩值相同,可以参考打开Visual

Studio中通过选择菜单“工具–选项–环境–字体和颜色”的方式查看Studio中对应类型的色彩方案进行设置。

apollo获取配置

  当应用使用下面的语句获取配置时,我们称之为获取应用自身的配置,也就是应用自身的application namespace的配置。

对这种情况的配置获取规则,简而言之如下:

  所以如果应用部署在A数据中心,但是用户没有在Apollo创建cluster,那么获取的配置就是默认cluster(default)的。

  如果应用部署在A数据中心,同时在运行时指定了SomeCluster,但是没有在Apollo创建cluster,那么获取的配置就是A数据中心cluster的配置,如果A数据中心cluster没有配置的话,那么获取的配置就是默认cluster(default)的。

  以FX.Hermes.Producer为例,hermes producer是hermes发布的公共组件。当使用下面的语句获取配置时,我们称之为获取公共组件的配置。

对这种情况的配置获取规则,简而言之如下:

  前面提到了Apollo客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送。长连接实际上我们是通过Http Long Polling实现的,具体而言:

  考虑到会有数万客户端向服务端发起长连,在服务端我们使用了async servlet(Spring DeferredResult)来服务Http Long Polling请求。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/190093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-29 13:54
下一篇 2024-11-29 13:54

相关推荐

  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29
  • Java 8 Group By 会影响排序吗?

    是的,Java 8中的Group By会对排序产生影响。本文将从多个方面探讨Group By对排序的影响。 一、Group By的概述 Group By是SQL中的一种常见操作,它…

    编程 2025-04-29

发表回复

登录后才能评论