当前位置: 首页 > news >正文

本地引入bootstrap_如何引入 Spring Cloud AliCloud ACM

如果要在您的项目中引入 ACM,使用 group ID 为 com.alibaba.cloud 和 artifact ID 为 spring-cloud-starter-alicloud-acm 的 starter。

<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alicloud-acmartifactId>
dependency>

9.2. 使用 ACM 进行配置管理

当客户端引入了 Spring Cloud AliCloud ACM Starter 以后,应用启动时会自动从配置管理的服务端获取配置信息,并注入到 Spring 的 Environment 中。

以下是一个简单的应用示例。

@SpringBootApplication
public class ProviderApplication {

public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(ProviderApplication.class, args);
String userName = applicationContext.getEnvironment().getProperty("user.name");
String userAge = applicationContext.getEnvironment().getProperty("user.age");
System.err.println("user name :"+userName+"; age: "+userAge);
}
}

在从配置中心服务端获取配置信息之前,还需要配置服务端的地址,在 bootstrap.properties 中,还需要配置以下信息。

# 必选,应用名会被作为从服务端获取配置 key 的关键词组成部分
spring.application.name=acm-config
server.port=18081
# 以下就是配置中心服务端的IP和端口配置
spring.cloud.alicloud.acm.server-list=127.0.0.1
spring.cloud.alicloud.acm.server-port=8080
此时没有启动配置中心,启动应用会报错,因此在应用启动之前,应当首先启动配置中心。

9.2.1. 启动配置中心

ACM 使用的配置中心有两种,一种是本地运行的轻量版配置中心,主要用于开发和本地调试,一种是阿里云产品 ACM。通常情况下,可以使用轻量版配置中心作为开发和测试环境,使用云上的 ACM 作为灰度和生产环境。

使用轻量版配置中心

轻量版配置中心的下载和启动方式可参考 这里

只需要执行文档中的第1步 (下载轻量配置中心) 和第2步 (启动轻量配置中心)。
使用阿里云配置中心

使用云上 ACM ,可以省去服务端的维护工作,同时稳定性也会更有保障。当使用云上配置中心时,代码部分和使用轻量配置中心并没有区别,但是配置上会有一些区别。

以下是一个简单的使用云上配置中心的配置示例,配置详情需要在 ACM控制台查询

# 应用名会被作为从服务端获取配置 key 的关键词组成部分,因此是必选
spring.application.name=acm-config
# 端口配置自由配置即可
server.port=18081
# 以下就是配置中心的IP和端口配置
spring.cloud.alicloud.acm.server-mode=EDAS
spring.cloud.alicloud.access-key=你的阿里云AK
spring.cloud.alicloud.secret-key=你的阿里云SK
spring.cloud.alicloud.acm.endpoint=acm.aliyun.com
spring.cloud.alicloud.acm.namespace=你的 ACM namespace,需要在 ACM 控制台查询
EDAS 提供应用托管服务,如果你将应用托管到 EDAS,那么 EDAS 将会自动为你填充所有与业务无关的配置。

9.2.2. 在配置中心添加配置

  1. 启动好轻量版配置中心之后,在控制台中添加如下的配置。

Group:      DEFAULT_GROOUP

DataId: acm-config.propertiesContent: user.name=jamesuser.age=18
DataId 的格式为 {prefix}.{file-extension},prefix 默认从配置 spring.application.name 中取值,file-extension 默认的值为 "properties"。

9.2.3. 启动应用验证

启动这个Example,可以在控制台看到打印出的值正是我们在轻量版配置中心上预先配置的值。

user name :james; age: 18

9.3. 更改配置文件扩展名

spring-cloud-starter-alicloud-acm 中 DataId 默认的文件扩展名是 properties。除去 properties 格式之外,也支持 yaml 格式。支持通过 spring.cloud.alicloud.acm.file-extension 来配置文件的扩展名,yaml 格式可以配置成 yaml 或 yml

修改文件扩展名后,在配置中心中的 DataID 以及 Content 的格式都必须做相应的修改。

9.4. 动态更新

spring-cloud-starter-alicloud-acm 默认支持配置的动态更新,当您在配置中心修改配置的内容时,会发布 Spring 中的 RefreshEvent 事件。带有 @RefreshScope 和 @ConfigurationProperties 注解的类会自动刷新。

你可以通过配置 spring.cloud.alicloud.acm.refresh.enabled=false 来关闭动态刷新。

9.5. Profile 粒度的配置

spring-cloud-starter-alicloud-acm 在加载配置的时候,首先会加载 DataId 为{spring.application.name}.{file-extension}的配置,当 spring.profiles.active 中配置有内容时,还会依次去加载 spring.profile 对应的内容, DataId 的格式为{spring.application.name}-{profile}.{file-extension}的配置,且后者的优先级高于前者。

spring.profiles.active 属于配置的元数据,所以也必须配置在 bootstrap.properties 或 bootstrap.yaml 中。比如可以在 bootstrap.properties 中增加如下内容。

spring.profiles.active={profile-name}

Note: 也可以通过 JVM 参数 -Dspring.profiles.active=develop 或者 --spring.profiles.active=develop 这类优先级更高的方式来配置,只需遵循 Spring Boot 规范即可。

9.6. 自定义配置中心超时时间

ACM Client 与 Server 通信的超时时间默认是 3000ms,可以通过 spring.cloud.alicloud.acm.timeout 来修改超时时间,单位为 ms 。

9.7. 自定义 Group 的配置

在没有明确指定 {spring.cloud.alicloud.acm.group} 配置的情况下, 默认使用的是 DEFAULT_GROUP 。如果需要自定义自己的 Group,可以通过以下配置来实现:

spring.cloud.alicloud.acm.group=DEVELOP_GROUP
该配置必须放在 bootstrap.properties 文件中。并且在添加配置时 Group 的值要和 spring.cloud.alicloud.acm.group 的配置值一致。

9.8. 共享配置

ACM 提供了一种多个应用之间共享配置中心的同一个配置的推荐方式,供多个应用共享一些配置时使用,您在使用的时候需要添加在 bootstrap 中添加一个配置项 spring.application.group

spring.application.group=company.department.team

这时应用在获取上文提到的自身所独有的配置之前,会先依次从这些 DataId 去获取,分别是 company:application.properties, company.department:application.properties, company.department.team:application.properties。然后,还会从 {spring.application.group}:{spring.application.name}.{file-extension} 中获取,越往后优先级越高,最高的仍然是应用自身所独有的配置。

共享配置中 DataId 默认后缀为 properties,可以通过 spring.cloud.alicloud.acm.file-extension 配置. {spring.application.group}:{spring.application.name}.{file-extension} 。
如果设置了 spring.profiles.active ,DataId 的格式还支持 {spring.application.group}:{spring.application.name}-{spring.profiles.active}.{file-extension}。优先级高于 {spring.application.group}:{spring.application.name}.{file-extension}

9.9. Actuator 监控

ACM 对应的 Actuator 监控地址为 /acm,其中 config 代表了 ACM 元数据配置的信息,runtime.sources 对应的是从 ACM 服务端获取的配置的信息及最后刷新时间, runtime.refreshHistory 对应的是动态刷新的历史记录。

8e0204d3cac67641c401f06b56971271.png

目前100000+人已关注加入我们

38a323e57205550d94b1d9f86f6d0331.gif 738bfcf97f0a821ae1a0291424ca212f.gif d0e808c1eaefba1c0fb5303e60b9be46.gif cddf5dbb7ffc0d9683fcf7b1ad0147c9.gif 38068774eb9ff9196bd06047448caf0d.gif b61d821484622e1c2e85f23a97bd56a4.gif 977770c5320c37292051d29f34b908d1.gif e3ee79b9201b457de1c36c41959aabb1.gif

db9a52c9b32f0e19566853b68686efa7.gif a6e79564c3ec7c011cce321e20bd68af.gif 151866dfb24811635bd9537271f2b4cd.gif 12c6d053deb7a831c0b82525db01a0f6.gif 3433cedac9d77a5abbf5bdab99f10948.gif 73834a0a0b49924ab3155c50277c1307.gif bd89b5bbc653d04d49f8a557cee9fdab.gif 38068774eb9ff9196bd06047448caf0d.gif

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Windows XP 中提供的快捷键列表[比较全]
  • python is beautiful_Python学习之beautifulsoup4库的使用
  • Sysinternals Suite 工具下载
  • python朋友圈广告怎么这么火_利用Python让你的微信朋友圈与众不同,更加高大上...
  • 这个世界,有点创新真难啊
  • python2和python3的不同点_Django python2和python3的区别
  • 笑林广记
  • python绘图库seaborn_Python 绘图总结(seaborn库的使用) (上)
  • ITCAST心法第2讲:“学”“问”之道
  • 2字节取值范围_c++的变量类型的数值范围(常用)
  • extremecomponents使用struts2国际化信息的方法
  • 如何快速找到package里的main_餐饮加盟行业如何快速找到精准客户?
  • 数据库事务性操作
  • python random库全部_python常用库之random
  • 查询中使用CASE结构
  • [PHP内核探索]PHP中的哈希表
  • C# 免费离线人脸识别 2.0 Demo
  • CentOS6 编译安装 redis-3.2.3
  • ERLANG 网工修炼笔记 ---- UDP
  • JavaScript函数式编程(一)
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • node入门
  • PAT A1017 优先队列
  • pdf文件如何在线转换为jpg图片
  • python docx文档转html页面
  • Python十分钟制作属于你自己的个性logo
  • vue的全局变量和全局拦截请求器
  • 从重复到重用
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 关于 Cirru Editor 存储格式
  • 智能网联汽车信息安全
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • #微信小程序:微信小程序常见的配置传旨
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $.ajax()参数及用法
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (2)leetcode 234.回文链表 141.环形链表
  • (LeetCode C++)盛最多水的容器
  • (PySpark)RDD实验实战——求商品销量排行
  • (Ruby)Ubuntu12.04安装Rails环境
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • *** 2003
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .Net Core 生成管理员权限的应用程序
  • .NET delegate 委托 、 Event 事件
  • .Net MVC4 上传大文件,并保存表单
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 发展历程