在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
本文暂时没有评论,来添加一个吧(●'◡'●)