Springboot引入Spring Cloud for AWS的配置中心(Parameter Store和Secrets)

问题

现在手上有一个老Spring2.5.15项目,需要使用AWS Parameter Store作为配置中心服务。

思路

引入这个Spring版本对应的Spring Cloud,然后再引入Spring Cloud AWS相关组件。然后,在AWS云上面准备好配置,然后,启动我本地Spring工程,验证有没有使用云端配置。

Spring Cloud引入

从Spring官网可知,我这个老版本的Spring2.5.15,只能选择Spring Cloud 2020.0.x的Cloud版本。具体依赖如下:

xml 复制代码
<properties>
    <spring-cloud.version>2020.0.6</spring-cloud.version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

等待一段时间后,然后在引入Spring Cloud AWS集成依赖。

Spring Cloud AWS 依赖引入

xml 复制代码
<properties>
    <spring-cloud-aws.version>2.3.5</spring-cloud-aws.version>
</properties>
<dependencyManagement>
    <dependencies>
            <dependency>
                <groupId>io.awspring.cloud</groupId>
                <artifactId>spring-cloud-starter-aws-parameter-store-config</artifactId>
                <version>${spring-cloud-aws.version}</version>
            </dependency>
            <dependency>
                <groupId>io.awspring.cloud</groupId>
                <artifactId>spring-cloud-starter-aws-secrets-manager-config</artifactId>
                <version>${spring-cloud-aws.version}</version>
            </dependency>
		
    </dependencies>
</dependencyManagement>

注意这里也有版本对应要求的,可以查看Spring Cloud AWS在github上面的开源项目介绍,具体如下图:

xml 复制代码
<dependency>
    <groupId>io.awspring.cloud</groupId>
    <artifactId>spring-cloud-starter-aws-parameter-store-config</artifactId>
</dependency>

<dependency>
    <groupId>io.awspring.cloud</groupId>
    <artifactId>spring-cloud-starter-aws-secrets-manager-config</artifactId>
</dependency>

Parameter Store创建参数

这里以jdbc连接参数为例子。创建了一个连接参数。

Secrets Manager创建参数

下面设置数据库中用户名和密码,如下图:

配置密钥,如下图:

Spring配置

yaml 复制代码
spring:
  application:
    name: api
  config:
    import:
      - aws-parameterstore:/config/${spring.application.name}_${spring.profiles.active}
      - aws-secretsmanager:/secret/${spring.application.name}_${spring.profiles.active}
aws:
  paramstore:
  	region: cn-north-1
    defaultContext: ${spring.application.name}
  secretsmanager:
    region: cn-north-1
    defaultContext: ${spring.application.name}

注意,这里用到了spring.config.import,这种方式Spring配置是对原来的boot环境多配置文件的替代。

配置调试日志

yaml 复制代码
# 日志配置
logging:
  level:
    io:
      awspring:
        cloud:
          paramstore:
            AwsParamStorePropertySource: debug

测试验证

重启Spring工程,出现如下内容,说明spring读到了配置:

bash 复制代码
11:02:13.555 [restartedMain] INFO  i.a.c.s.AwsSecretsManagerPropertySources - [logTo,255] - Loading secrets from AWS Secret Manager secret with name: /secret/api_local, optional: false
11:02:13.555 [restartedMain] INFO  i.a.c.p.AwsParamStorePropertySources - [logTo,255] - Loading property from AWS Parameter Store with name: /config/api_local, optional: false
11:02:13.555 [restartedMain] DEBUG i.a.c.p.AwsParamStorePropertySource - [logTo,252] - Populating property retrieved from AWS Parameter Store: .spring.datasource.druid.master.url

类似如下效果:

总结

spring.config.import方式配置,是Spring为了支持云原生配置中心,后面加入新的配置方式,是对boot配置方式的替代。之前写过一篇文章(《Spring Cloud AWS配置中心使用》)就是使用Spring老的boot方式进行的配置。

参考

相关推荐
重生之我是Java开发战士18 小时前
【Spring Cloud】Eureka服务注册发现与LoadBalancer负载均衡
spring cloud·eureka·负载均衡
爱折腾的编程老炮18 小时前
潮玩品牌自建抽盒机小程序——商城 + 抽盒 + 一番赏 + 会员 + 社区,一套代码怎么搭
spring boot·小程序·vue·mybatis·uniapp
谢亮_vipxieliang19 小时前
ValidX vs Google Guava Preconditions:验证 vs 断言
java·spring boot·后端·spring cloud·hibernate·guava
小小猪的春天1 天前
Java 手写第一个 MCP Server:Spring AI MCP 半小时跑通
java·人工智能·spring boot·ai编程
计算机毕设定制辅导-无忧学长1 天前
《基于SpringBoot青年公寓出租管理系统的设计与实现》
java·vue.js·spring boot·青年公寓出租管理系统
MetaLite1 天前
AI编程与工程底座-让AI遵守SpringBoot边界
人工智能·spring boot·ai编程
摇滚侠2 天前
《SpringBoot 3:入门与应用实战》第 14 章 打包与部署 Spring Boot 应用打包 阅读笔记 41
spring boot·笔记·后端
大梦想家a2 天前
新能源汽车共享充电桩收费管理系统的设计与实现(SpringBoot+MyBatis-Plus+Vue,前后台分离完整源码)
spring boot·汽车·mybatis
夏天拐跑了西瓜2 天前
Spring Cloud 微服务实战(八):Hystrix熔断降级——从服务雪崩到断路器模式
spring cloud·hystrix·微服务
摇滚侠2 天前
《SpringBoot 3:入门与应用实战》第 14 章 打包与部署 制作 Docker 镜像 阅读笔记 43
spring boot·笔记·docker