一、准备工作
1.2.1 AppId classpath:/META-INF/app.properties  内容app.id=YOUR-APP-ID
1.2.2 Environment 对于Mac/Linux,文件位置为/opt/settings/server.properties 例如env=DEV 详细见文档。
1.2.3 本地缓存路径 /opt/data/{appId}/config-cache (权限)
二、Maven Dependency

<dependency><groupId>com.ctrip.framework.apollo</groupId><artifactId>apollo-client</artifactId><version>0.7.0</version>
</dependency>

三、客户端用法
3.1 API使用方式

Config config = ConfigService.getAppConfig(); //config instance is singleton for each namespace and is never null
String someKey = "someKeyFromDefaultNamespace";
String someDefaultValue = "someDefaultValueForTheKey";
String value = config.getProperty(someKey, someDefaultValue);

3.1.2 监听配置变化事件

Config config = ConfigService.getAppConfig(); //config instance is singleton for each namespace and is never null
config.addChangeListener(new ConfigChangeListener() {@Overridepublic 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()));}}
});

3.1.3 获取公共Namespace的配置

String somePublicNamespace = "CAT";
Config config = ConfigService.getConfig(somePublicNamespace); //config instance is singleton for each namespace and is never null
String someKey = "someKeyFromPublicNamespace";
String someDefaultValue = "someDefaultValueForTheKey";
String value = config.getProperty(someKey, someDefaultValue);

3.2 Spring整合方式
3.2.1 基于XML的配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:apollo="http://www.ctrip.com/schema/apollo"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.ctrip.com/schema/apollo http://www.ctrip.com/schema/apollo.xsd"><apollo:config order="2"/><!-- 这个是最复杂的配置形式,指示Apollo注入FX.apollo和FX.soa namespace的配置到Spring环境中,并且顺序在application前面 --><apollo:config namespaces="FX.apollo,FX.soa" order="1"/>
</beans>

3.2.3 Spring Annotation支持
Apollo同时还增加了两个新的Annotation来简化在Spring环境中的使用。
@ApolloConfig
用来自动注入Config对象
@ApolloConfigChangeListener

用来自动注册ConfigChangeListener

public class TestApolloAnnotationBean {@ApolloConfigprivate Config config; //inject config for namespace application@ApolloConfig("application")private Config anotherConfig; //inject config for namespace application@ApolloConfig("FX.apollo")private Config yetAnotherConfig; //inject config for namespace FX.apollo@Value("${batch:100}")private int batch;//config change listener for namespace application@ApolloConfigChangeListenerprivate void someOnChange(ConfigChangeEvent changeEvent) {//update injected value of batch if it is changed in Apolloif (changeEvent.isChanged("batch")) {batch = config.getIntProperty("batch", 100);}}//config change listener for namespace application@ApolloConfigChangeListener("application")private void anotherOnChange(ConfigChangeEvent changeEvent) {//do something}//config change listener for namespaces application and FX.apollo@ApolloConfigChangeListener({"application", "FX.apollo"})private void yetAnotherOnChange(ConfigChangeEvent changeEvent) {//do something}//example of getting config from Apollo directly//this will always return the latest value of timeoutpublic int getTimeout() {return config.getIntProperty("timeout", 200);}//example of getting config from injected value//the program needs to update the injected value when batch is changed in Apollo using @ApolloConfigChangeListener shown abovepublic int getBatch() {return this.batch;}
}

转载文章: Apollo配置

github

junit单元测试

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import java.util.Set;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring.xml")
public class TestApolloConfig {@Autowiredprivate ApolloUtil apolloUtil;@Testpublic void testAllconfig() throws Exception {Set<String> keys = apolloUtil.getPropertyNames();for (Object key : keys) {String val=apolloUtil.getString(key.toString());System.out.println(key.toString() + "===" + val);}}
}

2、Environment
对于Mac/Linux,文件位置为/opt/settings/server.properties
对于Windows,文件位置为C:\opt\settings\server.properties
3、本地缓存
Mac/Linux: /opt/data/{appId}/config-cache
Windows: C:\opt\data{appId}\config-cache

Apollo阿波罗配置中心相关推荐

  1. Apollo - 阿波罗配置中心使用,一文搞定!

    Apollo基本概念 一.简介 Apollo - A reliable configuration management system Apollo的Github地址 Apollo(阿波罗)是携程框架 ...

  2. Apollo阿波罗配置中心基本概述

    1.什么是Apollo: Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流 ...

  3. linux阿波罗配置文件放在哪,Apollo阿波罗配置中心

    一.准备工作 1.2.1 AppId classpath:/META-INF/app.properties  内容app.id=YOUR-APP-ID 1.2.2 Environment 对于Mac/ ...

  4. SpringCloud - Spring Cloud 之 Apollo Config携程阿波罗配置中心(二十一)

    由于Spring Cloud自带的Config 需要配合 Bus 使用,且不能实时刷新,因此市面上出现了很多开元的配置中心 市面上开源的配置中心 Apollo(阿波罗):携程框架部门研发的分布式配置中 ...

  5. Apollo(阿波罗配置中心学习)- 实用详细

    Apollo系列学习(阿波罗配置中心学习) 一.Apollo配置中心简单介绍 二.Windows 系统搭建基于携程Apollo配置中心单机模式 三.自定义Spring Boot项目通过配置中心启动项目 ...

  6. Apollo-阿波罗配置中心详细使用教程

    Apollo基本概念 一.简介 Apollo - A reliable configuration management system Apollo的Github地址 Apollo(阿波罗)是携程框架 ...

  7. Apollo微服务配置中心详解

    Apollo微服务配置中心详解 前言 一.Apollo架构 (一)简介 (二)角色介绍 (三)服务端实现 (四)客服端实现 二.Apollo部署 (一)准备数据库 (二)配置服务 1. 手动部署 (1 ...

  8. 阿波罗配置中心(apollo)的个人看法

    阿波罗应该是近几年比较火的一个分布式配置中心了,说说我个人的理解,希望对一些人有用吧. 首先从使用者的角度想 我们怎么用配置中心的? 1.得有个页面,能有权限管理,能有创建配置key-value. 在 ...

  9. .NET Core + K8S + Apollo 玩转配置中心

    1.引言 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理 ...

最新文章

  1. python uwsgi_python Web开发你要理解的WSGI uwsgi详解
  2. 一步步打造漂亮的新闻列表(无刷新分页、内容预览)(4)
  3. java class对象创建时机_Java面向对象编程-类的声明周期
  4. 批处理文件将多台连接的手机安装同一个APP
  5. 数据库中的范式和反范式详解!
  6. 窗口分析函数_5_计算累加乘
  7. MySQL高级 - 常用工具 - mysqlbinlog与mysqldump
  8. Java8函数式编程(3)--规约操作
  9. java中公用类_提示公用类型
  10. android标题显示栏菜单在标题之下,Android菜单项标题不显示
  11. 让Visual Studio 2013为你自动生成XML反序列化的类
  12. 机器学习从入门到精通50讲(九)-基于 ANTLR 自己实现一个 SQL 解析器
  13. Qt学习之Qt基础入门(下)
  14. 信息学奥赛一本通(1198:逆波兰表达式)
  15. Silverlight.XNA(C#)跨平台3D游戏研发手记:(一)差集运算在SLG战斗范围设定中的应用...
  16. 解决ifconfig没有网卡问题
  17. 匠能电子:55寸0.88mm拼接屏与1.7mm拼接屏的对比效果
  18. 深入浅出 CSS 动画
  19. 程序员来聊一聊信用卡(二)——对信用卡的一些基本认识
  20. 什么是支付通道,一篇文章了解支付通道理念

热门文章

  1. 如何为电脑添加组策略
  2. 开发者论坛一周精粹(第五十二期) 阿里云备案最全流程指导
  3. 2020年,外链建设方法与策略有哪些?
  4. Interrupt 架构之美 -- Linux Kernel 实现欣赏
  5. 第一次和女生约会去哪?6个地方让你走进女生的心房
  6. 雅礼集训2019 day7
  7. 用户研究如何获取更为真实的用户信息
  8. LaTeX 西班牙语
  9. archlinux php imagemagick,archlinux 以及fvwm 的一些简单配置 来自网络
  10. 基于三维GIS技术的动态LOD渲染方法的实验及验证