标签:DynamoDB amazon-dynamodb 客户 设置
先决条件
-
爪哇> 11
-
格拉德尔 > 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实现
-
创建表
-
基于分区键插入/更新项目
-
按 ID 获取项目
设置 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();
}
标签:DynamoDB,amazon-dynamodb,客户,设置 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。