springboot整合使用Apollo配置中心
传统配置文件的问题
在分布式应用中,比如像springcloud的微服务应用,随着业务模块的拆分越来越细,必然会导致配置文件越来越多,而且越来越复杂,一方面是带来了对于配置文件的集中管理不方便,而且对于开发人员来说,某个服务需要新增、修改自己的配置文件需要绕很大的圈子,修改完毕后,还需要审核,校验,权限,发布等一些列环节才能完成配置文件的操作,总体来说是比较麻烦的,
Apollo带来的方便
个人总结的话,就是使用apollo配置中心,对于所有开发人员来说,这里相当于是一个配置文件的公共大水池,不同的应用只需要通过配置不同的AppId,在各自的appId下面进行配置,如果你需要使用其他应用模块的配置文件,通过不同应用的Appid找到相应的key即可使用,非常方便,而且相对于传统的配置文件,有一个比较麻烦的问题是,一旦修改了配置文件,项目必须要重启才能生效,Apollo配置中心就很好的解决了这个小麻烦,新增完毕配置文件只需要一键发布,即可在程序中使用,不需要重启项目,下面就来说说具体的使用过程,
1、这里我先搭建了一个简单的springboot工程,首先需要在pom中导入依赖,
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>1.3.0</version>
</dependency>
2、在application.properties配置文件中添加如下两行配置,
#自定义的appid名称,区分不同的应用
app.id=app_congge_first
#eureka配置中心地址
apollo.meta=http://192.168.111.132:8080
3、Apollo提供了多种获取配置中心配置文件key/value的方式,这里我使用两种方式获取,
3-1 直接使用注解的方式导入,前提是你知道了key的名称,这样就可以像使用配置到本地的配置文件中那种方式直接通过@Value注解进行使用,为了演示方便,这里写了一个测试的controller,
@Value("${image_url:default}")
private String imgUrlValue;
@Value("${app_address:default}")
private String appAddressValue;
@ResponseBody
@RequestMapping("/getConfigByApollo1")
public String getConfigByApollo1(){
return imgUrlValue;
}
这里,我提前创建好了两个key/value对,注意当你建完一个key/value之后,必须要点击发布才能让配置生效,
启动项目,测试一下,http://localhost:8083/getConfigByApollo1,可以看到已经成功读取到配置文件的值,
3-2,Apollo还提供了相应的java的API用于读取配置文件,这里我们可以事先将相关的key存放到一个常量类,或者本地配置文件中,然后通过一个读取value的工具类直接进行读取即可,
/**
* 存放所有的key
* @author asus
*
*/
public class KesConstants {
public static String KEYS_IMG_URL = "image_url";
public static String KEYS_IMG_APPADDRESS = "app_address";
}
读取key/value工具类,
/**
* 阿波罗读取key
* @author asus
*/
public class ApolloValueReadUtil {
public static String getApolloValueByKey(String key){
if(StringUtils.isBlank(key)){
return null;
}
Config config = ConfigService.getAppConfig();
String defaultValue = "default";
return config.getProperty(key, defaultValue);
}
}
然后我们在controller中测试一下,
@ResponseBody
@RequestMapping("/getConfigByApollo2")
public String getConfigByApollo2(){
return ApolloValueReadUtil.getApolloValueByKey(KesConstants.KEYS_IMG_APPADDRESS);
}
浏览器输入,http://localhost:8083/getConfigByApollo2,可以看到也可以成功读取到配置文件,
综合比较的话,大家可以根据项目的实际情况两种方式均可,当然,个人更加偏向于第一种,因为在项目的任何地方都可以很方便的引用,前提是你需要知道key的名称,
本篇到这里就结束了,以上主要是Apollo整合springboot最基本的使用,方便大家参考,更多的用法大家可以继续深入研究,最后,感谢观看!
上一篇: Mybatis学习(三)增删改查
下一篇: Mybatis(学习三)--增删改查
推荐阅读
-
Springboot apollo原理及使用方法详解
-
springboot配置文件抽离 git管理统 配置中心详解
-
SpringBoot JPA使用配置过程详解
-
使用SpringBoot简单了解Druid的监控系统的配置方法
-
springboot如何使用logback-spring配置日志格式,并分环境配置
-
JAVAEE——SpringBoot日志篇:日志框架SLF4j、日志配置、日志使用、切换日志框架
-
使用Java类加载SpringBoot、SpringCloud配置文件
-
SpringBoot整合JPA数据源方法及配置解析
-
SpringCloud学习系列之五-----配置中心(Config)和消息总线(Bus)完美使用版
-
SpringBoot整合Netty并使用Protobuf进行数据传输(附工程)