You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spring MVC项目中从AWS Secret Manager获取数据源配置属性

Spring MVC 集成 AWS Secrets Manager 读取数据库配置步骤

1. 引入必要依赖

首先在你的pom.xml(Maven)或build.gradle(Gradle)中添加AWS Secrets Manager SDK依赖,这里以Maven为例:

<!-- AWS SDK v1 版本依赖 -->
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-secretsmanager</artifactId>
    <version>1.12.XXX</version> <!-- 替换为最新稳定版 -->
</dependency>
<!-- AWS SDK v2 版本依赖,二选一即可 -->
<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>secretsmanager</artifactId>
    <version>2.20.XXX</version> <!-- 替换为最新稳定版 -->
</dependency>

确保项目已经引入Spring JDBC、对应数据库驱动等基础依赖。

2. 封装密钥读取工具类

封装从AWS Secrets Manager拉取数据库配置的逻辑,这里以SDK v2为例:

import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient;
import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueRequest;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Map;

public class AwsSecretsManagerUtil {
    // 替换为你的密钥名称、对应AWS区域
    private static final String SECRET_NAME = "你的数据库密钥存储名称";
    private static final Region REGION = Region.of("AWS区域编码,例如us-east-1");

    public static Map<String, String> getDbConfig() {
        try (SecretsManagerClient client = SecretsManagerClient.builder()
                .region(REGION)
                .build()) {
            GetSecretValueRequest request = GetSecretValueRequest.builder()
                    .secretId(SECRET_NAME)
                    .build();
            String secretString = client.getSecretValue(request).secretString();
            // 解析JSON格式的密钥内容
            ObjectMapper objectMapper = new ObjectMapper();
            return objectMapper.readValue(secretString, Map.class);
        } catch (Exception e) {
            throw new RuntimeException("读取AWS Secrets Manager配置失败", e);
        }
    }
}

注意:部署在AWS EC2/ECS等服务内的应用建议通过IAM角色赋予Secrets Manager读取权限,不需要硬编码AK/SK;本地调试可通过AWS配置文件、环境变量传入身份凭证。

3. 动态初始化数据源

不再使用静态jdbc.properties配置,改为读取Secrets Manager的配置初始化数据源,可根据项目配置习惯选择Java配置或XML配置方式:

Java配置示例

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;
import java.util.Map;

@Configuration
public class DataSourceConfig {
    @Bean
    public DataSource dataSource() {
        Map<String, String> dbConfig = AwsSecretsManagerUtil.getDbConfig();
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        // 替换为你的数据库驱动类,字段名对应你在Secrets Manager中存储的key
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl(dbConfig.get("jdbcUrl"));
        dataSource.setUsername(dbConfig.get("username"));
        dataSource.setPassword(dbConfig.get("password"));
        return dataSource;
    }
}

XML配置示例

先编写数据源工厂类,再在XML中声明Bean:

public class DataSourceFactory {
    public static DataSource createDataSource() {
        // 逻辑同上述Java配置中的dataSource方法实现
    }
}
<bean id="dataSource" class="你的包路径.DataSourceFactory" factory-method="createDataSource"/>

4. 功能验证

启动Spring MVC项目,测试数据库业务逻辑是否能正常运行,连接成功即代表集成生效。

内容的提问来源于stack exchange,提问作者Salman Bhatti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:09:00