欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springboot整合使用Apollo配置中心

程序员文章站 2022-07-14 08:49:52
...

传统配置文件的问题

在分布式应用中,比如像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之后,必须要点击发布才能让配置生效,
springboot整合使用Apollo配置中心

启动项目,测试一下,http://localhost:8083/getConfigByApollo1,可以看到已经成功读取到配置文件的值,
springboot整合使用Apollo配置中心

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,可以看到也可以成功读取到配置文件,
springboot整合使用Apollo配置中心

综合比较的话,大家可以根据项目的实际情况两种方式均可,当然,个人更加偏向于第一种,因为在项目的任何地方都可以很方便的引用,前提是你需要知道key的名称,

本篇到这里就结束了,以上主要是Apollo整合springboot最基本的使用,方便大家参考,更多的用法大家可以继续深入研究,最后,感谢观看!