Apollo在Spring项目的入门使用(学习笔记)

Apollo基本介绍

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
具体可参考github:https://github.com/ctripcorp/apollo(全英文看着费劲)

导入依赖

	<!--阿波罗配置中心依赖-->
        <dependency>
            <groupId>com.ctrip.framework.apollo</groupId>
            <artifactId>apollo-client</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.ctrip.framework.apollo</groupId>
            <artifactId>apollo-core</artifactId>
            <version>1.0.0</version>
        </dependency>

注意导入的时候要将client和core两个依赖,不然可能会出现如下报错:

Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class com.ctrip.framework.apollo.tracer.Tracer
      at com.ctrip.framework.apollo.build.ApolloInjector.getInstance(ApolloInjector.java:37)
      at com.ctrip.framework.apollo.ConfigService.getManager(ConfigService.java:25)
      at com.ctrip.framework.apollo.ConfigService.getConfig(ConfigService.java:61)

图为Apollo页面详情
页面

配置

用户在用java连接apollo时,需要创建app.properties在META-INF的文件夹下,而META-INF必须在resources下面,另外还需要创建aopollo-env.properties。

在这里插入图片描述

app.properties

在apollo配置中心中存在AppId,这是每一个项目的唯一标识,因此app.properties内需要确定,你需要使用哪个项目的配置信息
在这里插入图片描述
在这里插入图片描述
因为apollo在java中也需要远程连接apollo配置信息的数据,因此可以加入apollo.meta={ip}:8080,因为apollo一般是8070的端口,但我们获取数据的端口一般是8080,这个具体需要与运维了解他们的配置的apollo的端口。这种方式也可以获取apollo的具体数据,这似乎我们已经可以连接apollo获取数据了,感觉之前图中的apollo-env.properties,好像没有什么作用了,但是在实际开发中,我们不可能只有一个环境,开发有开发环境,测试有测试环境,生产有生产环境,因此我们一般不会写死apollo.meta,采用上图的app.id,不同环境仅是服务器不同,但我们保持app.id一致。

apollo-env.properties

apollo-env.properties中就是用来配置不同环境访问不同的apollo配置中心的,apollo允许用户配置四个不同的环境,分别是dev-开发环境,fat-功能测试环境,uat-用户测试环境, pro-生产环境。
在这里插入图片描述

server.properties

这似乎好像还有一个问题,服务器如何知道自己是处于什么环境因此还需要一个配置告诉apollo自己的电脑是处于什么环境

,因此开发人员需要在C:\opt\settings 的文件夹下配置server.properties。
在这里插入图片描述
在server.properties中告诉apollo自己在什么环境:

env=DEV
/*
env=FAT 功能测试环境
env=UAT 用户测试环境
env=PRO 生产环境
*/

apollo存在四种环境,如果是开发人员那就老老实实配置DEV环境吧

获取远程配置

在能获取到远程配置后,需要配置到spring中才能使用

public class AppPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
@Override
protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props) throws BeansException {
try {
//从apollo中获取所有配置信息
Config config = ConfigService.getAppConfig(); //config instance is singleton for each namespace and is never null
Set<String> fieldnames = config.getPropertyNames();
//遍历配置信息
for(String fieldname : fieldnames){
String attributeName=fieldname;
String attributeValue = config.getProperty(fieldname,"");
System.out.println("attributeName:"+attributeName + "; attributeValue:" + attributeValue );
props.put(attributeName,attributeValue);
}
} catch (Exception e) {
e.printStackTrace();
logger.info("获取apollo配置失败");
}

super.processProperties(beanFactoryToProcess, props);
}
}

这样就能将得到的所有配置存储到spring容器中了,不过不要忘了配置xml文件。
后续正在学习。。。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值