在springCloud中有一个重要的组件就是配置中心,config:server,用于配置springboot中需要注入的各种配置项。但是现在发现越来越多的企业使用Apollo进行集成。博主在开发中也是使用Apollo进行配置。本文总结Apollo的的使用,集成到springboot,和注入方式等。
Apollo是携程框架部门研发的开源配置管理中心,能够集中管理应用在不同环境、不同集群的配置,配置修改后能够实时的推送到应用端,并且有关于权限管理、流程治理等功能。
(一)Apollo支持四个维度管理key-value格式的配置
Apllo的部署需要Mysql数据库,需要5.6.5以上版本。
Apollo服务端共需要两个数据库:ApolloPortalDB和ApolloConfigDB,我们把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。
执行两个sql文件(通过携程Apollo社区下载)
sql/apolloportaldb.sql
sql/apolloconfigdb.sql
会创建两个数据库
sql文件可在官网:Quick Start · apolloconfig/apollo Wiki · GitHub 下载
在/home/docker/script路径下创建“apollo”文件夹
在/home/docker/script/apollo路径下创建“apollo-portal.sh”脚本文件,内容为:
docker run -d \
--name apollo-portal \
--net=host \
-v /tmp/logs:/opt/logs \
-e SPRING_DATASOURCE_URL=
"jdbc:mysql://数据库地址/apollo_portal?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=数据库账号\
-e SPRING_DATASOURCE_PASSWORD=数据库密码\
-e APOLLO_PORTAL_ENVS=test \
-e TEST_META=http://服务器ip地址:8080 \
apolloconfig/apollo-portal
在/home/docker/script/apollo路径下创建“apollo-config.sh”脚本文件,内容为:
docker run -d \
--name apollo-configservice \
--net=host \
-v /tmp/logs:/opt/logs \
-e SPRING_DATASOURCE_URL=
"jdbc:mysql://数据库地址/apollo_config?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=数据库账号\
-e SPRING_DATASOURCE_PASSWORD=数据库密码\
apolloconfig/apollo-configservice
在/home/docker/script/apollo路径下创建“apollo-admin.sh”脚本文件,内容为:
docker run -d \
--name apollo-adminservice \
--net=host \
-v /tmp/logs:/opt/logs \
-e SPRING_DATASOURCE_URL=
"jdbc:mysql://数据库地址/apollo_config?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=数据库账号\
-e SPRING_DATASOURCE_PASSWORD=数据库密码\
apolloconfig/apollo-adminservice
4、通过docker拉取Apollo镜像
docker pull apolloconfig/apollo-configservice:latest
docker pull apolloconfig/apollo-adminservice:latest
docker pull apolloconfig/apollo-portal:latest
5、运行Apollo
1. ./apollo-portal.sh
2. ./apollo-config.sh
3. ./apollo-admin.sh
6.访问Apollo
访问服务器IP:8070可以进行访问,默认的用户名是apollo,密码是admin。
1、引入maven
com.ctrip.framework.apollo
apollo-client
${apollo.version}
com.ctrip.framework.apollo
apollo-core
${apollo.version}
2.启动类注解@EnableApolloConfig
在Apollo系统配置完成配置后
注入方式一:
例子:
/**
* 微信主体appId
*/
@Value("${weixin.appid:-1}")
private String appid;
注入方式二:
使用注解@ConfigurationProperties 使用实体的方式,个人觉得这种方式更好。
例子:
Apollo中配置的格式和yml的格式一致
oss:
tencent:
domain:
region: mhyr-api
bucketName: mhyr-13015545476
secretId:
secretKey:
styleRule:
thumbnailStyleRule: "!Photo_Compression"
fileTypes: ## 允许上传的文件类型
- png
- jpg
- jpeg
- gif
- bmp
- svg
代码通过实体类类进行映射
@ConfigurationProperties(prefix = "oss.tencent")
public class TencentProperties {
/**域名*/
private String domain;
/**地域节点*/
private String region;
/**存储桶名称*/
private String bucketName;
/**secretId*/
private String secretId;
/**secretKey*/
private String secretKey;
/**图片策略*/
private String styleRule;
/**缩略图策略*/
private String thumbnailStyleRule;
/**文件类型*/
private List fileTypes;
}