apollo java客户端_携程配置中心Apollo的Java客户端API的使用
一、SpringBoot集成
1.发布配置信息
设置本机为DEV环境:Linux在/opt/settings/server.properties增加配置env=DEV,windows在c:\opt\settings\server.properties
图1
在apollo portal上新建项目后,默认就有了application命名空间。在DEV环境下新建一个名为test_namespace的命名空间。
在application上发布:spring.applicaton.name=apollo_demo,server.port=9000。
在test_name上发布:name=name1, value=value2。
2.引入依赖
org.springframework.boot
spring-boot-stater
org.springframework.boot
spring-boot-starter-web
org.projectlombok
lombok
${lombok.version}
provided
com.ctrip.framework.apollo
apollo-client
${apollo.version}
3.项目配置
在项目的application.properties(applicaiton.yml)或者/META-INF/app.properties填入app.id=appId(在apollo-portal上新建项目时填写的appId,表示获取的是那个配置项目的配置信息)。
resources目录下新建apollo-env.properties,填写各个环境的meta server地址:
图2
使用application命名空间的配置信息来启动SpringBoot应用 入口方法增加@EnableApolloConfig注解
@SpringBootApplication
@EnableApolloConfig
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
如果不使用@EnableApolloConfig注解,可以在application.properties里面配置apollo.bootstrap.enabled=true,效果一样。 使用apollo.bootstrap.namespaces = application,test_namespace可以指定命名空间。
启动项目:
图3
4.获取配置
application命名空间配置信息 java bean:
@Component
@EnableApolloConfig
@Getter
@Setter
@ToString
public class AppNamespace {
@Value("${spring.application.name:}")
private String name;
@Value("${server.port:}")
private String value;
}
java bean:
@Component
@EnableApolloConfig("CASE.test_namespace")
@Getter
@Setter
@ToString
public class TestNamespace {
@Value("${name}")
private String name;
@Value("${value}")
private String value;
}
使用:
@RestController
public class DemoController {
@Autowired
private TestNamespace demo;
@Autowired
private AppNamespace application;
@ApolloConfig
private Config appConfig;
@ApolloConfig("CASE.test_namespace")
private Config testConfig1;
private Config testConfig2 = ConfigService.getConfig("CASE.test_namespace");
}
以上两种方式获取配置信息的值,会跟配置中心的更改同步(1秒内);还可以使用@ConfigurationProperties来获取配置信息,但这种方式不会同步更新,需要额外的编码配置才能实现,具体查看官方文档。
5.其他
@ApolloJsonValue注解,作用相当于@Value,将JSON字符串转成对象。
@ApolloConfigChangeListener注解::
@ApolloConfigChangeListener
private void someOnChange(ConfigChangeEvent changeEvent) {
//update injected value of batch if it is changed in Apollo
if (changeEvent.isChanged("key")) {
System.out.println(config.getIntProperty("key", ""));
}
}
@ApolloConfigChangeListener相当于@ApolloConfigChangeListener("application")
相当于:
Config config = ConfigService.getAppConfig();
config.addChangeListener(new ConfigChangeListener() {
@Override
public void onChange(ConfigChangeEvent changeEvent) {
System.out.println("Changes for namespace " + changeEvent.getNamespace());
for (String key : changeEvent.changedKeys()) {
ConfigChange change = changeEvent.getChange(key);
System.out.println(String.format("Found change - key: %s, oldValue: %s, newValue: %s, changeType: %s", change.getPropertyName(), change.getOldValue(), change.getNewValue(), change.getChangeType()));
}
}
});
如果同时以两种方式绑定changeListener的方式,只有ConfigService实例的监听器会生效。
2.其他
apollo java客户端_携程配置中心Apollo的Java客户端API的使用相关推荐
- apollo 配置中心_配置中心——Apollo小记
一.什么是配置 配置是程序运行时,动态调整行为的能力. 配置有以下属性: 配置是独立于程序的只读变量 同一份程序在不同的配置下才会有不同的行为,而且配置对于程序来说是只读的,所以程序可以通过读取配置来 ...
- apollo local 模式_「架构」 - 配置中心 Apollo基本使用
公司需要使用Apollo配置中心,下面会出现大段Apollo官网文字截取引用. 一.Apollo(配置中心) Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同 ...
- apollo @value没生效_不问不要紧,一文要人命,绝对的面试加分项配置中心Apollo深度解读...
往期推荐 阿里面试官问我:到底知不知道什么是Eureka,这次,我没沉默 万字详解Ribbon架构,针对面试高频题多角度细说Ribbon 什么是Hystrix,阿里技术最终面,遗憾的倒在Hystrix ...
- JAVA开发与运维(配置中心Apollo的使用)
在微服务构建的分布式系统,有一个组件很重要,就是配置中心.配置中心集中管理所有微服务的配置信息,这样做既规范了开发配置规范,也方便于后期的运维管理.这一篇我们讲一下携程的开源配置中心Apollo的使用 ...
- 配置中心Apollo的设计原理
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:https://urlify.cn/eIBZne 前言 Ap ...
- 常见的配置中心:Apollo(二)-接入Apollo
1 配置 Apollo作为大型互联网系统生产级别的配置中心,在开发的积累当中构建了自己的配置维度体系. 1.1 配置四层维度 (1)Application(项目应用) 维度中的最顶层,在实际开发中我们 ...
- 微服务 分布式配置中心Apollo详解
微服务 分布式配置中心Apollo详解 1. 配置中心概述 1.1 配置中心简介 1.2 配置中心特点 1.3 配置中心对比 2. Apollo概述 2.1 Apollo简介 2.2 Apollo特点 ...
- 【最全最详细】分布式配置中心 Apollo
1. 基本概念 由于 Apollo 概念比较多,刚开始使用比较复杂,最好先过一遍概念再动手实践尝试使用. 1.背景 随着程序功能的日益复杂,程序的配置日益增多,各种功能的开关.参数的配置.服务器的地址 ...
- 分布式配置中心-Apollo
1 概览 1.1 什么是配置 应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数 据库连接参数.启动参数等. 1.2 什么是配置中心 传统单体应用存在 ...
最新文章
- [Asp.net MVC]Asp.net MVC5系列——添加数据
- linux攻击端口,Linux 常见攻击端口封杀表
- Exchange安装
- boost::owner_hash相关的测试程序
- Android开发之API29以上Environment.getExternalStoragePublicDirectory废弃的问题
- 太神奇了!使用C#实现自动核验健康码:(1)二维码识别
- mysql cmd 实时监控_MySQL实时监控工具orztop的使用介绍
- mf模型 svd++_推荐系统算法(MF、FM、CF、SVD、LFM、SVD++、TItemCF、timeSVD++、模型融合)...
- DataGrid多层表头设计
- linux下批量新增数据,linux下批量插入数据到mysql
- 检查字段是否包含字符串
- LaTeX详细安装步骤和简明教程
- d3中为每个rect元素绑定带数据的点击事件
- element提交图片限制一张_ElementUI 上传文件以及限制
- 在豌豆荚安卓市场下载了伪造的ES文件管理器,该流氓apk会自动的下载手机游戏
- java.lang.AbstractMethodError: dm.jdbc.driver.DmdbConnection.isValid(I)Z
- linux c alarm系统调用入门
- 通过开源工具XCA工具签发和管理可被浏览器信任的SSL证书
- 1.7.1 容器类数据-列表
- 攻防世界高手区easytornado过关
热门文章
- halcon Matching-3D 3D匹配,持续更新
- console类详细解释
- 有限元ansys/lsdyna学习笔记-01
- QT5.14.2基于PCL1.11.1显示点云(基于Windows VS2019开发环境)
- java限制发送短信次数_使用java发送短信验证码码,出现流量限制怎么办?急急急...
- android 更新平台,Android更新平台架构方案
- java基础实例代码_Java基础实例
- postman调用webservice接口_接口对前后端和测试的意义
- IntelliJ IDEA 连接数据库 详细过程
- BZOJ1488: [HNOI2009]图的同构