当前位置:   article > 正文

Apollo配置中心使用_apollo配置中心官方文档

apollo配置中心官方文档

Apollo配置中心

Apollo配置中心-简介

Apollo(阿波罗)是由作者宋顺基于开源模式开发,他是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。
Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。
.Net客户端不依赖任何框架,能够运行于所有.Net运行时环境。
更多产品介绍参见Apollo配置中心介绍
本地快速部署请参见Quick Start

演示环境(Demo):
http://81.68.181.139
账号/密码:apollo/admin
如访问GitHub速度缓慢,可以访问Gitee镜像,不定期同步

apollo源码

apollo官网源码:https://github.com/apolloconfig/apollo
在这里插入图片描述

快速安装指南:https://github.com/apolloconfig/apollo-quick-start
在这里插入图片描述

apollo gitee源码:https://gitee.com/apolloconfig/apollo
如访问GitHub速度缓慢,可以访问Gitee镜像,不定期同步
在这里插入图片描述

apollo使用文档:https://www.apolloconfig.com/#/zh/README
在这里插入图片描述

Apollo配置基本概念

配置是独立于程序的只读变量
配置首先是独立于程序的,同一份程序在不同的配置下会有不同的行为。
其次,配置对于程序是只读的,程序通过读取配置来改变自己的行为,但是程序不应该去改变配置。
常见的配置有:DB Connection Str、Thread Pool Size、Buffer Size、Request Timeout、Feature Switch、Server Urls等。
配置伴随应用的整个生命周期: 配置贯穿于应用的整个生命周期,应用在启动时通过读取配置来初始化,在运行时根据配置调整行为。
配置可以有多种加载方式: 配置也有很多种加载方式,常见的有程序内部hard code,配置文件,环境变量,启动参数,基于数据库等。
配置需要治理
权限控制:由于配置能改变程序的行为,不正确的配置甚至能引起灾难,所以对配置的修改必须有比较完善的权限控制
不同环境、集群配置管理:同一份程序在不同的环境(开发,测试,生产)、不同的集群(如不同的数据中心)经常需要有不同的配置,所以需要有完善的环境、集群配置管理
框架类组件配置管理:还有一类比较特殊的配置 - 框架类组件配置,比如CAT客户端的配置。虽然这类框架类组件是由其他团队开发、维护,但是运行时是在业务实际应用内的,所以本质上可以认为框架类组件也是应用的一部分。这类组件对应的配置也需要有比较完善的管理方式。

Apollo特性

正是基于配置的特殊性,所以Apollo从设计之初就立志于成为一个有治理能力的配置发布平台,目前提供了以下的特性:
统一管理不同环境、不同集群的配置: Apollo提供了一个统一界面集中式管理不同环境(environment)、不同集群(cluster)、不同命名空间(namespace)的配置;一份代码部署在不同的集群,可以有不同的配置,比如zookeeper的地址等;通过命名空间(namespace)可以很方便地支持多个不同应用共享同一份配置,同时还允许应用对共享的配置进行覆盖。
**配置修改实时生效(热发布): ** 用户在Apollo修改完配置并发布后,客户端能实时(1秒)接收到最新的配置,并通知到应用程序。
**版本发布管理:**所有的配置发布都有版本概念,从而可以方便地支持配置的回滚。
**灰度发布:**支持配置的灰度发布,比如点了发布后,只对部分应用实例生效,等观察一段时间没问题后再推给所有应用实例。
权限管理、发布审核、操作审计: 应用和配置的管理都有完善的权限管理机制,对配置的管理还分为了编辑和发布两个环节,从而减少人为的错误;所有的操作都有审计日志,可以方便地追踪问题。
客户端配置信息监控: 可以在界面上方便地看到配置在被哪些实例使用。
提供Java和.Net原生客户端: 提供了Java和.Net的原生客户端,方便应用集成;支持Spring Placeholder, Annotation和Spring Boot的ConfigurationProperties,方便应用使用(需要Spring 3.1.1+);同时提供了Http接口,非Java和.Net应用也可以方便地使用。
提供开放平台API: Apollo自身提供了比较完善的统一配置管理界面,支持多环境、多数据中心配置管理、权限、流程治理等特性。不过Apollo出于通用性考虑,不会对配置的修改做过多限制,只要符合基本的格式就能保存,不会针对不同的配置值进行针对性的校验,如数据库用户名、密码,Redis服务地址等;对于这类应用配置,Apollo支持应用方通过开放平台API在Apollo进行配置的修改和发布,并且具备完善的授权和权限控制。
部署简单: 配置中心作为基础服务,可用性要求非常高,这就要求Apollo对外部依赖尽可能地少;目前唯一的外部依赖是MySQL,所以部署非常简单,只要安装好Java和MySQL就可以让Apollo跑起来;Apollo还提供了打包脚本,一键就可以生成所有需要的安装包,并且支持自定义运行时参数。

Apollo基础模型

在这里插入图片描述
1.用户在配置中心对配置进行修改并发布
2.配置中心通知Apollo客户端有配置更新
3.Apollo客户端从配置中心拉取最新的配置、更新本地配置并通知到应用

Apollo架构设计

在这里插入图片描述
4大核心模块:
Config Service:提供配置的读取、推送等功能,服务对象是Apollo客户端。
Admin Service:提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)。
Client:为应用获取配置,支持实时更新、通过MetaServer获取ConfigService的服务列表、使用客户端软负载SLB方式调用ConfigService,同时在Client侧会做load balance、错误重试(即通过域名访问Meta Server获取Config Service服务列表(IP+Port),而后直接通过IP+Port访问服务)。
Portal:配置管理界面、通过MetaServer获取AdminService的服务列表、使用客户端软负载SLB方式调用AdminService,同时在Portal侧会做load balance、错误重试(即通过域名访问Meta Server获取Admin Service服务列表(IP+Port),而后直接通过IP+Port访问服务)。

3大辅助模块:
Eureka:用于服务发现和注册、Config/AdminService注册实例并定期报心跳、和ConfigService住在一起部署。
MetaServer:
封装Eureka的服务发现接口,相当于一个Eureka Proxy。
Portal通过域名访问MetaServer获取AdminService的地址列表。
Client通过域名访问MetaServer获取ConfigService的地址列表。
逻辑角色,和ConfigService住在一起部署。
NginxLB:
和域名系统配合,协助Portal访问MetaServer获取AdminService地址列表。
和域名系统配合,协助Client访问MetaServer获取ConfigService地址列表。
和域名系统配合,协助用户访问Portal进行配置管理。
为了简化部署,实际上把Config Service、Eureka和Meta Server三个逻辑角色部署在同一个JVM进程中。

Apollo架构设计-实时推送设计

在这里插入图片描述
1、用户在Portal操作配置发布。
2、Portal调用Admin Service的接口操作发布。
3、Admin Service发布配置后,发送ReleaseMessage给各个Config Service。
4、Config Service收到ReleaseMessage后,通知对应的客户端。

Apollo架构设计-可用性

在这里插入图片描述

Apollo架构设计-监控

CAT: Apollo客户端和服务端目前支持CAT自动打点,所以如果自己公司内部部署了CAT的话,只要引入cat-client后Apollo就会自动启用CAT打点。如果不使用CAT的话,也不用担心,只要不引入cat-client,Apollo是不会启用CAT打点的。
Apollo也提供了Tracer相关的SPI,可以方便地对接自己公司的监控系统。
参考:https://github.com/apolloconfig/apollo/releases/tag/v0.4.0
SkyWalking: 可以参考@hepyu贡献的apollo-skywalking-pro样例。
Metrics: 从1.5.0版本开始,Apollo服务端支持通过/prometheus暴露prometheus格式的metrics,如http://${someIp:somePort}/prometheus

Apollo架构设计-扩展

1、Portal实现用户登录功能:参考文档
2、Portal接入邮件服务:参考文档
3、Portal 共享 session:参考文档
4、Portal启用webhook通知:参考文档

Apollo-本地部署

参考部署文档:https://github.com/apolloconfig/apollo-quick-start
在这里插入图片描述
参考官网本地部署,该部署以linux服务器为例介绍部署,如果需要再windows上执行部署,需要下载源码自行编译打包部署。

准备工作

1、jak 版本要求: 1.8+
2、mysql 版本要求:5.6.5+
3、下载Quick Start安装包:checkout或下载apollo-build-scripts项目。或者通过网盘链接下载,提取码: 9wwe,下载到本地后,在本地解压apollo-quick-start.zip。

安装步骤

1、创建数据库:Apollo服务端共需要两个数据库:ApolloPortalDB和ApolloConfigDB,我们把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。
注意:以下介绍mysql 5.7通过命令行及客户端两种方式导入脚本文件。

mysql命令行创建ApolloPortalDB

下面以MySQL原生客户端为例:windows》mysql安装目录》选择 mysql 5.7command line client.
在这里插入图片描述
输入登录mysql数据库密码,查看数据: show databases ,如果已经存在,则备份数据库即可。
在这里插入图片描述
mysql命令行执行:source sql文件绝对路径, windows和linux同理。
windows机器命令行复制粘贴: 选中要复制的内容》右键( 即复制), 在需要粘贴的位置在右键(即粘贴)。
在这里插入图片描述
查看apolloportaldb是否已经创建成功。
在这里插入图片描述
使用库:use apolloportaldb
查看表: show tables;
在这里插入图片描述导入成功后,可以通过执行以下sql语句来验证:
select Id, AppId, Name from ApolloPortalDB.App;
以上表示sql文件执行成功。

mysql客户端创建ApolloPortalDB

通过各种MySQL客户端导入sql/apolloportaldb.sql即可。以下介绍navicat创建数据库并导入数据。
运行navicat,点击文件》新建数据库连接》mysql.
在这里插入图片描述
数据连接数据ip、端口、用户账号、密码,点击连接测试,提示连接成功,则表示数据库正常。
在这里插入图片描述
选中创建的连接》右键》选择新建数据库》
在这里插入图片描述
输入数据库名称 ApolloPortalDB、字符集为 utf8mb4、排序规则为 utf8mb4_general_ci
在这里插入图片描述
创建成功如下:
在这里插入图片描述
找到自己下载的apolloportaldb.sql 文件,注释或删除2行创建数据库命令。
在这里插入图片描述
选择刚创建的数据库 apolloportaldb》选择运行sql文件
在这里插入图片描述
选择修改后的 apolloportaldb.sql 文件,点击运行即可。
在这里插入图片描述
在这里插入图片描述
运行结果如下,日志中错误没有提示及日志内容提示successfully,表示sql文件执行成功。
在这里插入图片描述
选中apolloportaldb数据库》右键》关闭数据库,然后重新打开结果如下,表示sql文件执行成功。
在这里插入图片描述

创建ApolloConfigDB

同上创建《创建ApolloPortalDB》。
在这里插入图片描述

配置数据库连接信息

Apollo服务端需要知道如何连接到你前面创建的数据库,所以需要编辑demo.sh,修改ApolloPortalDB和ApolloConfigDB相关的数据库连接串信息。

注意:填入的用户需要具备对ApolloPortalDB和ApolloConfigDB数据的读写权限。

#apollo config db info
apollo_config_db_url=jdbc:mysql://localhost:3306/apolloconfigdb?characterEncoding=utf8
apollo_config_db_username=用户名
apollo_config_db_password=密码(如果没有密码,留空即可)

# apollo portal db info
apollo_portal_db_url=jdbc:mysql://localhost:3306/apolloportaldb?characterEncoding=utf8
apollo_portal_db_username=用户名
apollo_portal_db_password=密码(如果没有密码,留空即可)

注意:数据库名大小写,可以通过命令设置不区分大小写。默认创建都是小写。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
启动Apollo配置中心

1、 确保端口未被占用
Quick Start脚本会在本地启动3个服务,分别使用8070, 8080, 8090端口,请确保这3个端口当前没有被使用。
例如,在Linux/Mac下,可以通过如下命令检查:

lsof -i:8080
  • 1

2、脚本执行启动脚本
sh demo.sh start
当看到如下输出后,就说明启动成功了!

==== starting service ====
Service logging file is ./service/apollo-service.log
Started [10768]
Waiting for config service startup.......
Config service started. You may visit http://localhost:8080 for service status now!
Waiting for admin service startup....
Admin service started
==== starting portal ====
Portal logging file is ./portal/apollo-portal.log
Started [10846]
Waiting for portal startup......
Portal started. You can visit http://localhost:8070 now!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

docker安装

Apollo 1.7.0版本开始会默认上传Docker镜像到Docker Hub,可以按照如下步骤获取。
在这里插入图片描述

mysql

1、mysql安装
参考《docker安装mysql服务》

2、客户端连接测试
在这里插入图片描述

Apollo Config Service

1、获取镜像

docker pull apolloconfig/apollo-configservice:${version}
version:指定下载版本,可以不指定,默认下载最新版本latest
  • 1
  • 2

2、运行镜像

docker run -p 8080:8080 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.3.103:3306/apolloconfigdb?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=123456 \
-dit -v /tmp/logs:/opt/logs --name apollo-configservice apolloconfig/apollo-configservice:latest
  • 1
  • 2
  • 3
  • 4

参数说明:
SPRING_DATASOURCE_URL: 对应环境ApolloConfigDB的地址
SPRING_DATASOURCE_USERNAME: 对应环境ApolloConfigDB的用户名
SPRING_DATASOURCE_PASSWORD: 对应环境ApolloConfigDB的密码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Apollo Admin Service

1、获取镜像

docker pull apolloconfig/apollo-adminservice:${version}
version:指定下载版本,可以不指定,默认下载最新版本latest
  • 1
  • 2

2、运行镜像

docker run -p 8090:8090 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.3.103:3306/apolloconfigdb?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=123456 \
-dit -v /tmp/logs:/opt/logs --name apollo-adminservice apolloconfig/apollo-adminservice:latest
  • 1
  • 2
  • 3
  • 4

参数说明:
SPRING_DATASOURCE_URL: 对应环境ApolloConfigDB的地址
SPRING_DATASOURCE_USERNAME: 对应环境ApolloConfigDB的用户名
SPRING_DATASOURCE_PASSWORD: 对应环境ApolloConfigDB的密码

启动后查看日志,该服务器启动失败,具体信息如下:
2024-04-05 20:46:20.945 WARN 1 — [tbeatExecutor-0] c.n.d.s.t.d.RetryableEurekaHttpClient : Request execution failed with message: I/O error on PUT request for “http://localhost:8080/eureka/apps/APOLLO-ADMINSERVICE/d121e96795fe:apollo-adminservice:8090”: Connection refused (Connection refused); nested exception is java.net.ConnectException: Connection refused (Connection refused)
2024-04-05 20:46:20.945 ERROR 1 — [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_APOLLO-ADMINSERVICE/d121e96795fe:apollo-adminservice:8090 - was unable to send heartbeat!

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
从日志中可以看到eureka链接不上,由于adminservice与configservice是两个不同的容器,相当于两个linux服务器,而通过localhost只会找到自己本机服务,而自己本机又没有启动configservice,所以连接异常,这是他们镜像制作的bug,不支持eureka连接地址修改。

解决办法:
1.下载apollo官网源码,分别修改application.yml文件eureka连接地址,application-github.properties中数据库连接及账号密码。
2.执行mvn clean package 打包。
3.将打包后的jar包上传服务器,通过java -jar xxx.jar命令启动即可。

java -jar apollo-adminservice-2.3.0-SNAPSHOT.jar -Dspring.profiles.active=dev,github,auth -Deureka.client.serviceUrl.defaultZone=http://192.168.3.103:8080/eureka/

  • 1
  • 2
Apollo Portal

1、获取镜像

docker pull apolloconfig/apollo-portal
默认下载最新版本latest
  • 1
  • 2

2、运行镜像

docker run -p 8070:8070 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.3.103:3306/apolloportaldb?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=123456 \
-e APOLLO_PORTAL_ENVS=dev \
-e DEV_META=http://192.168.3.103:8080 \
-dit -v /tmp/logs:/opt/logs --name apollo-portal apolloconfig/apollo-portal:latest
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

参数说明:
SPRING_DATASOURCE_URL: 对应环境ApolloPortalDB的地址
SPRING_DATASOURCE_USERNAME: 对应环境ApolloPortalDB的用户名
SPRING_DATASOURCE_PASSWORD: 对应环境ApolloPortalDB的密码
APOLLO_PORTAL_ENVS(可选): 对应ApolloPortalDB中的apollo.portal.envs配置项,如果没有在数据库中配置的话,可以通过此环境参数配置
DEV_META/PRO_META(可选): 配置对应环境的Meta Service地址,以${ENV}_META命名,需要注意的是如果配置了ApolloPortalDB中的apollo.portal.meta.servers配置,则以apollo.portal.meta.servers中的配置为准。
安装完成如下,3个服务全部启动成功。
在这里插入图片描述

登录测试

浏览器访问: http://192.168.3.103:8070/ ,登录账号/密码: apollo/admin
在这里插入图片描述
登录成功如下:
在这里插入图片描述

源代码构建

获取安装包

1、直接下载安装包:从GitHub Release页面下载预先打好的安装包:https://github.com/apolloconfig/apollo/releases
如果对Apollo的代码没有定制需求,建议使用这种方式,可以省去本地打包的过程。
2、通过源码构建:从GitHub Release页面下载Source code包或直接clone源码后在本地构建,如果需要对Apollo的做定制开发,需要使用这种方式。代码:https://github.com/apolloconfig/apollo

配置apollo-configservice

1、配置数据库连接信息
修改 apollo-configservice/src/main/resources/application-github.properties 中配置的数据库连接。填写正确的ApolloConfigDB数据库连接,注意用户名和密码后面不要有空格!

spring.datasource.url = jdbc:mysql://192.168.3.174:3306/apolloconfigdb?useUnicode=true&characterEncoding=UTF8
spring.datasource.username = root
spring.datasource.password = root

  • 1
  • 2
  • 3
  • 4

注:由于ApolloConfigDB在每个环境都有部署,所以对不同的环境config-service需要配置对应环境的数据库参数。
在这里插入图片描述

配置apollo-adminservice

1、配置数据库连接信息
修改 apollo-adminservice/src/main/resources/application-github.properties 中配置的数据库连接。填写正确的ApolloConfigDB数据库连接,注意用户名和密码后面不要有空格!

spring.datasource.url = jdbc:mysql://192.168.3.174:3306/apolloconfigdb?useUnicode=true&characterEncoding=UTF8
spring.datasource.username = root
spring.datasource.password = root
  • 1
  • 2
  • 3
配置apollo-portal

1、meta service信息
修改apollo-portal/src/main/resources/apollo-env.properties中meta配置。我这里只是部署了一个,所以使用dev.meta,如果有多个mate service,则需要配置多套环境。

#local.meta=http://192.168.3.174:8080
dev.meta=http://192.168.3.174:8080
apollo.meta=http://192.168.3.174:8080
#fat.meta=http://localhost:8080
#uat.meta=http://localhost:8080
#lpt.meta=http://localhost:8080
#pro.meta=http://localhost:8080

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2、配置数据库连接
修改 apollo-portal/src/main/resources/application-github.properties 中配置数据库连接信息,填写正确的apolloportaldb数据库连接,注意用户名和密码后面不要有空格!

spring.datasource.url = jdbc:mysql://192.168.3.174:3306/apolloportaldb?useUnicode=true&characterEncoding=UTF8
spring.datasource.username = root
spring.datasource.password = root

  • 1
  • 2
  • 3
  • 4
打包编译

选中clean、install,进行打包构建。
在这里插入图片描述
1、打包后,分别将apollo-adminservice/target/apollo-adminservice-2.3.0-SNAPSHOT.jar、apollo-configservice/target/apollo-configservice-2.3.0-SNAPSHOT.jar、apollo-portal/target/apollo-portal-2.3.0-SNAPSHOT.jar
三个jar包拷贝到需要部署的服务器上。

启动服务
启动configservice服务
在jar目录执行命令:java -jar apollo-configservice-2.3.0-SNAPSHOT.jar -Dspring.profiles.active=dev,github,auth
  • 1

在这里插入图片描述
2、浏览器查看启动服务
浏览器访问: http://localhost:8080/
在这里插入图片描述
3、检查服务健康状态
浏览器访问:http://localhost:8080/info
在这里插入图片描述
使用本机ip访问:
在这里插入图片描述

启动adminservice服务

1、启动服务
adminservice启动端口为8090,启动该服务需要指定注册中心地址,由于注册中心和configservice是一体的,故这里指定的地址为http://localhost:8080/eureka/

java -jar apollo-adminservice-2.3.0-SNAPSHOT.jar -Dspring.profiles.active=dev,github,auth -Deureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka/

  • 1
  • 2

2、查看adminservice服务注册是否成功
在这里插入图片描述
3、检查服务健康状态
在这里插入图片描述

启动protalservice服务

1、启动服务

java -jar apollo-portal-2.3.0-SNAPSHOT.jar -Dapollo_profile=dev,github,auth
  • 1

在这里插入图片描述
2、检查服务状态
浏览器访问:http://localhost:8070/signin,默认登录用户apollo/admin
在这里插入图片描述
登录成功如下:
在这里插入图片描述
1、创建应用
在这里插入图片描述
在这里插入图片描述

2、添加配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Apollo客户端使用

在项目pom.xml文件中引入依赖包

<dependency>
        <groupId>com.ctrip.framework.apollo</groupId>
        <artifactId>apollo-client</artifactId>
        <version>1.7.0</version>
    </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

在项目application.properties文件增加apollo属性配置

env=DEV
#AppId是应用的身份唯一标识
app.id=20240331002
#apollo meta server链接地址
apollo.meta=http://localhost:8080
#自定义缓存地址
apollo.cacheDir=/opt/data/
#apollo.cacheDir=C:/opt/settings/server.properties
#集群地址,默认为default
apollo.cluster=default
# 设置内存中的配置项是否保持和页面上的顺序一致
apollo.property.order.enable=true
#如果应用开启了访问密钥,客户端需要配置密钥,否则无法获取配置
apollo.accesskey.secret=192be6f083bb48afbe10c9a59cfe860c
#注入默认application namespace的配置
apollo.bootstrap.enabled = true
# will inject 'application', 'FX.apollo' and 'application.yml' namespaces in bootstrap phase
apollo.bootstrap.namespaces = application,application.yml
#将Apollo配置加载提到初始化日志系统之前
# put apollo initialization before logging system initialization
apollo.bootstrap.eagerLoad.enabled=true

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

在项目应用

Apollo支持API方式和Spring整合方式,该怎么选择用哪一种方式?

API方式灵活,功能完备,配置值实时更新(热发布),支持所有Java环境。
Spring方式接入简单,结合Spring有N种酷炫的玩法,如
Placeholder方式:
1、代码中直接使用,如:@Value(“${someKeyFromApollo:someDefaultValue}”)
2、配置文件中使用替换placeholder,如:spring.datasource.url: ${someKeyFromApollo:someDefaultValue}
3、直接托管spring的配置,如在apollo中直接配置spring.datasource.url=jdbc:mysql://localhost:3306/somedb?characterEncoding=utf8

Spring boot的@ConfigurationProperties方式
从v0.10.0开始的版本支持placeholder在运行时自动更新,具体参见PR #972。(v0.10.0之前的版本在配置变化后不会重新注入,需要重启才会更新,如果需要配置值实时更新,可以参考后续3.2.2 Spring Placeholder的使用的说明)
Spring方式也可以结合API方式使用,如注入Apollo的Config对象,就可以照常通过API方式获取配置了:
@ApolloConfig
private Config config; //inject config for namespace application

通过@Value注入
通过@ApolloConfig注入

通过指定namespace application ,将name值注入到属性中。

package com.starsky.project;

import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
import lombok.Data;
import lombok.ToString;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

//这个是最简单的配置形式,一般应用用这种形式就可以了,
// 用来指示Apollo注入application namespace的配置到Spring环境中
@Data
@ToString
@Configuration
//默认为application.properties,如果需要指定其他namespace,则指定完成命名空间
@EnableApolloConfig(value="application")
public class AppConfig {
    @Value("${name}")
    private String name;

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

使用该AppConfig 获取name值测试。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/733461
推荐阅读
  

闽ICP备14008679号