CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
DynamoDB 入门/课时/Spring 集成
RawBlame
课时目录12 节

DynamoDB 入门

  1. 01DynamoDB 是什么
  2. 02数据模型
  3. 03分区键与排序键
  4. 04CRUD 与条件写
  5. 05GSI 与 LSI
  6. 06Query 与 Scan
  7. 07DynamoDB Streams
  8. 08Spring 集成
  9. 09容量模式
  10. 10时序库对照
  11. 11DynamoDB vs MySQL
  12. 12综合练习

Spring 集成

AWS SDK v2、DynamoDbTemplate 概念。

30 分钟

Spring 集成

在 spring-boot-essentials 项目中用 AWS SDK v2 for Java 访问 DynamoDB。Spring 无官方 DynamoDB Starter,常用 Enhanced Client 或社区 DynamoDbTemplate 模式。

学习目标

  • 添加 SDK v2 依赖并配置 Region/凭证
  • 定义 @DynamoDbBean 实体与 Repository 风格访问
  • 理解与 JPA/MySQL 双数据源并存策略

核心内容

依赖

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>dynamodb-enhanced</artifactId>
</dependency>

凭证:EC2/ECS 用 IAM Role;本地 aws configure(aws-essentials)。

配置 Bean

@Configuration
public class DynamoDbConfig {
    @Bean
    DynamoDbClient dynamoDbClient() {
        return DynamoDbClient.builder()
            .region(Region.AP_SOUTHEAST_1)
            .build();
    }

    @Bean
    DynamoDbEnhancedClient enhancedClient(DynamoDbClient client) {
        return DynamoDbEnhancedClient.builder()
            .dynamoDbClient(client)
            .build();
    }
}

实验 profile 使用 application-lab.yml,不替换 spring.datasource.url(MySQL 主库)。

Repository 风格

@Service
public class UserProgressStore {
    private final DynamoDbTable<UserProgress> table;

    public UserProgressStore(DynamoDbEnhancedClient enhanced) {
        this.table = enhanced.table("CodeRoadMapLab-UserProgress",
            TableSchema.fromBean(UserProgress.class));
    }

    public void save(UserProgress p) { table.putItem(p); }

    public UserProgress get(String pk, String sk) {
        return table.getItem(Key.builder().partitionValue(pk).sortValue(sk).build());
    }
}

对照 mongo-spring:MongoRepository vs 手写 DynamoDbTable。

双数据源策略

MySQL(JPA)   → cf_track、cf_lesson、用户订单等权威数据
DynamoDB       → UserProgress 实验、高并发会话、Serverless 侧车

避免同一业务实体双写;跨库用 Streams 或消息队列最终一致。

练习

  • 新建 UserProgress Bean 与 Store,lab profile 启动验证
  • 写 @SpringBootTest 对 Local DynamoDB 做 put/get
  • 列出与 JPA @Entity 映射的 3 处差异
  • 小结

    SDK v2 Enhanced Client + @DynamoDbBean = Java 侧标准路径;与 JPA 并存各管各库。 下一课容量模式。

    加载本节练习…
    ← 上一课DynamoDB Streams下一课 →容量模式