跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

增强的 dynamo DB 和使用 Dynamo Local 的集成测试


HACK1949

推荐的帖子

先决条件

  1. 爪哇> 11

  2. 格拉德尔 > 5

在 Gradle 中设置增强型客户端

要在 Gradle 中设置增强型客户端,需要添加以下依赖项

  implementation 'com.amazonaws:aws-java-sdk-dynamodb:1.11.434'
  implementation 'software.amazon.awssdk:dynamodb:2.17.28'
   implementation 'software.amazon.awssdk:dynamodb-enhanced:2.17.28'

设置DynamoDb Local

AWS 文档提供了设置 maven build 的步骤,但 AWS 不提供 Gradle 设置,并且此库不可用中央 maven 存储库,因此用户需要设置 AWSmaven存储库以设置 DynamoDb Local

repositories {
    maven {
        name
         url "https://s3-us-west-2.amazonaws.com/dynamodb-local/release"
    }
} 

以下依赖项会将 DynamoDbLocal 添加到 gradle 项目中

testImplementation group: 'com.amazonaws', name: 'DynamoDBLocal', version: '1.11.119'

您可以在https://github.com/redskap/aws-dynamodb-java-example-local-testing/blob/master/README.md 中找到有关设置的更多信息。作为测试安装程序的一部分,复制 AwsDynamoDbLocalTestUtils 并在 JUnit Test 类的设置函数期间调用AwsDynamoDbLocalTestUtils#initSqLite()。

DynamoDb Domain POJO

此类是 Dynamo DB 模式的 POJO 表示,我使用lombok来避免 Getter 和 Setter 方法的锅炉电镀,@DynamoDbBean表示 dynamo db 结构,@DynamoDbPartitionKey表示主键 id

 @Data
@DynamoDbBean
public class Student {
    private String studentId;
    private String studentName;
    private String department;
    @DynamoDbPartitionKey
    @DynamoDbAttribute("studentId")
    public String getStudentId() {
        return studentId;
    }
} 

DynamoDb 服务实施

这个类有完整的DAO实现

  1. 创建表

  2. 基于分区键插入/更新项目

  3. 按 ID 获取项目

DynamoDBService.java

设置 JUnit 测试类

在启动期间,JUnit 将启动本地 dynamo 数据库实例,以下代码演示如何建立与本地实例的 DynamoClient 连接

private static final String TABLE\_NAME = "Student";
private static  DynamoDBProxyServer server;
private static final String port = "8000";
private static final String uri = "http://localhost:"+port;

 @BeforeEach
    public void setUpTest() throws Exception {

        AwsDynamoDbLocalTestUtils.initSqLite();

        server = ServerRunner.createServerFromCommandLineArgs(
                new String\[\]{"-inMemory", "-port", port});
        server.start();
        client=DynamoDbClient.builder()
                .endpointOverride(URI.create(uri))
                .region(Region.AF\_SOUTH\_1)                .credentialsProvider(StaticCredentialsProvider.create(
                        AwsBasicCredentials.create("fakeMyKeyId","fakeSecretAccessKey")))
                .build();
}
链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...