使用 Java 将 DynamoDB JSON 转换为标准 JSON问题的答案将于 2022 年过时。
问题是这两个导入都不再起作用:
import com.amazonaws.services.dynamodbv2.document.internal.InternalUtils;
import com.amazonaws.services.dynamodbv2.document.ItemUtils;
会发生什么:导入失败。
您还可以在文档中进行验证,此处:https://sdk.amazonaws.com/java/api/latest/index.html ?software/amazon/awssdk/services/dynamodb/package-summary.html
问题是,在 SDK 2.x 中用什么类来替代这两个类呢?
amazon-dynamodb aws-sdk aws-java-sdk-2.x aws-java-sdk-dynamodb
我有一个连接到 AWS DynamoDB 的应用程序。我正在尝试使用 Jedis 在此应用程序中实现 Redis 连接。
但是,就在我添加此依赖项之后 -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我收到这个错误 -
***************************
APPLICATION FAILED TO START
***************************
Description:
Field userInfoRepository in org.csulb.md.service.DBService required a bean of type 'org.csulb.md.repo.UserInfoRepository' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'org.csulb.md.repo.UserInfoRepository' in your configuration.
Run Code Online (Sandbox Code Playgroud)
UserInfoRepository 实现了 CrudRepository。
我不确定我错过了什么。简而言之,向此代码添加 spring-boot-starter-data-redis 依赖项会出现此错误。如果没有这种依赖性,代码就可以正常工作。
下面是我的其余代码。
主应用程序.java
package org.csulb.md;
@SpringBootApplication
public class MainApp {
public static void main(String[] args) {
SpringApplication.run(MainApp.class, …Run Code Online (Sandbox Code Playgroud) jedis spring-data spring-data-redis spring-boot aws-java-sdk-dynamodb
在 AWS DynamoDB 中,有两个选项可用于对表执行 CRUD 操作。
DynamoDBMapper:.
com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper;
AmazonDynamoDB dbClient = AmazonDynamoDBAsyncClientBuilder.standard().withCredentials(creds)
.withRegion("us-east-1").build();
// creds is AWSCredentialsProvider
DynamoDBMapper mapper = new DynamoDBMapper(dbClient);
mapper.save(item);
Run Code Online (Sandbox Code Playgroud)
桌子: com.amazonaws.services.dynamodbv2.document.Table;。
static DynamoDB dynamoDB =new DynamoDB(dbClient);
Table table = dynamoDB.getTable("TABLE_NAME");
Item item =new Item().withPrimaryKey("","")
.withString("":, "");
table.putItem(item);
Run Code Online (Sandbox Code Playgroud)
两者似乎都执行相同的操作。
DynamoDBMapper是Table之上的一层吗?如果是的话,使用这些的区别是什么?
amazon-web-services amazon-dynamodb aws-java-sdk-2.x aws-java-sdk-dynamodb dynamodb-mapper
我创建了一个 java 服务来从 dynamodb 获取详细信息,它工作正常,但我的挑战是我将表名硬编码到类文件@DynamoDbTable注释中,以便在不同的环境中工作,我觉得这不是正确的方法。我在下面给出了我的代码,有人可以帮助我解决这个问题。
代码示例
public class DynamodbService {
private DynamoDB client;
private DynamoDBMapper objectMapper;
/**
*
* @param client
* @param objectMapper
*/
@Autowired
public DynamodbService(DynamoDB client, DynamoDBMapper objectMapper) {
this.client = client;
this.objectMapper = objectMapper;
}
public List<Dynamodb> findAll() throws Exception {
DynamoDBMapperConfig mapperConfig = new DynamoDBMapperConfig.Builder()
.withTableNameOverride(DynamoDBMapperConfig.TableNameOverride.withTableNameReplacement(""))
.build();
DynamoDBMapper mapper = new DynamoDBMapper(client, mapperConfig);
DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
List<Dynamodb> scanResult = objectMapper.scan(Dynamodb.class, scanExpression);
return scanResult;
}
}
Run Code Online (Sandbox Code Playgroud)
我的 DynamoDB 配置
@Configuration
public class …Run Code Online (Sandbox Code Playgroud) java amazon-dynamodb spring-boot aws-java-sdk-2.x aws-java-sdk-dynamodb