一、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

3) 或者不在项目配置apollo-env.properties,而是直接在application.properties指定apollo.meta=ip:port的方式来执行需要读取配置的的服务

使用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

可以看到应用在启动前从配置中心获取配置信息来启动应用。 `@EnableApolloConfig`默认是从application命名空间获取配置的,相当于`@EnableApolloConfig("application")`.。

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的使用相关推荐

  1. apollo 配置中心_配置中心——Apollo小记

    一.什么是配置 配置是程序运行时,动态调整行为的能力. 配置有以下属性: 配置是独立于程序的只读变量 同一份程序在不同的配置下才会有不同的行为,而且配置对于程序来说是只读的,所以程序可以通过读取配置来 ...

  2. apollo local 模式_「架构」 - 配置中心 Apollo基本使用

    公司需要使用Apollo配置中心,下面会出现大段Apollo官网文字截取引用. 一.Apollo(配置中心) Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同 ...

  3. apollo @value没生效_不问不要紧,一文要人命,绝对的面试加分项配置中心Apollo深度解读...

    往期推荐 阿里面试官问我:到底知不知道什么是Eureka,这次,我没沉默 万字详解Ribbon架构,针对面试高频题多角度细说Ribbon 什么是Hystrix,阿里技术最终面,遗憾的倒在Hystrix ...

  4. JAVA开发与运维(配置中心Apollo的使用)

    在微服务构建的分布式系统,有一个组件很重要,就是配置中心.配置中心集中管理所有微服务的配置信息,这样做既规范了开发配置规范,也方便于后期的运维管理.这一篇我们讲一下携程的开源配置中心Apollo的使用 ...

  5. 配置中心Apollo的设计原理

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:https://urlify.cn/eIBZne 前言 Ap ...

  6. 常见的配置中心:Apollo(二)-接入Apollo

    1 配置 Apollo作为大型互联网系统生产级别的配置中心,在开发的积累当中构建了自己的配置维度体系. 1.1 配置四层维度 (1)Application(项目应用) 维度中的最顶层,在实际开发中我们 ...

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

    微服务 分布式配置中心Apollo详解 1. 配置中心概述 1.1 配置中心简介 1.2 配置中心特点 1.3 配置中心对比 2. Apollo概述 2.1 Apollo简介 2.2 Apollo特点 ...

  8. 【最全最详细】分布式配置中心 Apollo

    1. 基本概念 由于 Apollo 概念比较多,刚开始使用比较复杂,最好先过一遍概念再动手实践尝试使用. 1.背景 随着程序功能的日益复杂,程序的配置日益增多,各种功能的开关.参数的配置.服务器的地址 ...

  9. 分布式配置中心-Apollo

    1 概览 1.1 什么是配置 应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数 据库连接参数.启动参数等. 1.2 什么是配置中心 传统单体应用存在 ...

最新文章

  1. [Asp.net MVC]Asp.net MVC5系列——添加数据
  2. linux攻击端口,Linux 常见攻击端口封杀表
  3. Exchange安装
  4. boost::owner_hash相关的测试程序
  5. Android开发之API29以上Environment.getExternalStoragePublicDirectory废弃的问题
  6. 太神奇了!使用C#实现自动核验健康码:(1)二维码识别
  7. mysql cmd 实时监控_MySQL实时监控工具orztop的使用介绍
  8. mf模型 svd++_推荐系统算法(MF、FM、CF、SVD、LFM、SVD++、TItemCF、timeSVD++、模型融合)...
  9. DataGrid多层表头设计
  10. linux下批量新增数据,linux下批量插入数据到mysql
  11. 检查字段是否包含字符串
  12. LaTeX详细安装步骤和简明教程
  13. d3中为每个rect元素绑定带数据的点击事件
  14. element提交图片限制一张_ElementUI 上传文件以及限制
  15. 在豌豆荚安卓市场下载了伪造的ES文件管理器,该流氓apk会自动的下载手机游戏
  16. java.lang.AbstractMethodError: dm.jdbc.driver.DmdbConnection.isValid(I)Z
  17. linux c alarm系统调用入门
  18. 通过开源工具XCA工具签发和管理可被浏览器信任的SSL证书
  19. 1.7.1 容器类数据-列表
  20. 攻防世界高手区easytornado过关

热门文章

  1. halcon Matching-3D 3D匹配,持续更新
  2. console类详细解释
  3. 有限元ansys/lsdyna学习笔记-01
  4. QT5.14.2基于PCL1.11.1显示点云(基于Windows VS2019开发环境)
  5. java限制发送短信次数_使用java发送短信验证码码,出现流量限制怎么办?急急急...
  6. android 更新平台,Android更新平台架构方案
  7. java基础实例代码_Java基础实例
  8. postman调用webservice接口_接口对前后端和测试的意义
  9. IntelliJ IDEA 连接数据库 详细过程
  10. BZOJ1488: [HNOI2009]图的同构