专业的编程技术博客社区

网站首页 > 博客文章 正文

Spring Cloud集成Apollo分布式配置中心(含源代码)

baijin 2024-08-22 09:32:35 博客文章 9 ℃ 0 评论

在Spring Cloud项目中使用Apollo 分布式配置中心之前,需要先启动Apollo的配置服务端。

具体操作步骤,可参看如下链接:

携程Apollo(阿波罗)分布式配置中心-总体架构设计和核心概念

携程Apollo 分布式配置中心-本地单机部署(详细操作步骤)

1. 创建 config-client-apollo 项目

(1)添加依赖项:

<dependencies>

<dependency>

<groupId>com.ctrip.framework.apollo</groupId>

<artifactId>apollo-client</artifactId>

<version>1.0.0</version>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

</dependency>

</dependencies>

引入Apollo 的客户端依赖。

(2)在项目resources/META-INF/app.properties 中指定appId。

说明:Java 客户端通过 classpath:/META-INF/app.properties 来指定 appId。

app.id=123456789

Apollo 客户端在运行时需要知道当前应用是谁,从而可以去获取对应的配置。每个应用都需要有唯一的身份标识——appId。Apollo客户端根据这个appId 到Apollo 服务端获取对应的配置信息。

(3)在项目application.yml 配置文件中,配置apollo相关选项。

注入默认application namespace的配置示例,apollo.bootstrap.enabled = true

可以在Spring Boot的application.properties或bootstrap.properties中指定apollo.meta=http://config-service-url

如下图配置中,设置 apollo.meta = http://localhost:8080

可以通过Java system property 设置 ${env}_meta,如果当前env是dev,那么用户可以配置-Ddev_meta=http://config-service-url

还可以通过apollo-env.properties文件设置 ${env}_meta,如下所示。

用户也可以创建一个apollo-env.properties,放在程序的classpath下,或者放在spring boot应用的config目录下。

文件内容形如:

dev.meta=http://localhost:8080

fat.meta=http://apollo.fat.xxx.com

uat.meta=http://apollo.uat.xxx.com

pro.meta=http://apollo.xxx.com

如果通过以上各种手段都无法获取到Meta Server地址,Apollo最终会fallback到http://apollo.meta作为Meta Server地址。

2. 设置 config-client-apollo 项目的启动项设置

在代码和配置项都完成之后,设置apollo client端项目的启动项设置。

主要是 VM options 选择的设置(启动参数是通过VM 参数设置的):-Denv=dev -Ddev_meta=http://localhost:8080

3. config-client-apollo 中相关代码

通过Java Config的方式,可以使用@Value的方式注入配置项。

@Value("${config_info:default}")

private String config;

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

示例代码如下:

@ApolloConfig

private Config config; //inject config for namespace application

@ApolloConfig("application")

private Config anotherConfig; //inject config for namespace application

下面的代码仅仅是演示目的。

4. 启动Eureka、config-client-apollo 项目,同时在 Apollo portal 配置相应的参数值。

在Apollo portal 中配置相应的参数。

然后,访问如下地址,查看返回值。

http://localhost:9018/configConsumer/getConfigInfo

Github项目源代码

项目源代码来自《重新定义Spring Cloud 实战》:

https://github.com/rickiechina/spring-cloud-code/tree/master/ch12-10

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表