2017-05-05 72 views
0

我想为我的Spring Boot应用程序实现后端DynamoDB。但是AWS最近更新了他们针对DynamoDB的SDK。因此,互联网上几乎所有的教程都不直接相关,如http://www.baeldung.com/spring-data-dynamodbDynamoDB for Spring Boot的实现

我已阅读Amazon的有关DynamoDB类的SDK文档。具体来说,实例化对象的方式和端点/区域设置已被更改。在过去,建造和设置终点应该是这样的:

@Bean 
public AmazonDynamoDB amazonDynamoDB() { 
    AmazonDynamoDB amazonDynamoDB 
     = new AmazonDynamoDBClient(amazonAWSCredentials()); 

    if (!StringUtils.isEmpty(amazonDynamoDBEndpoint)) { 
     amazonDynamoDB.setEndpoint(amazonDynamoDBEndpoint); 
    } 

    return amazonDynamoDB; 
} 

@Bean 
public AWSCredentials amazonAWSCredentials() { 
    return new BasicAWSCredentials(
     amazonAWSAccessKey, amazonAWSSecretKey); 
} 

然而,对setEndpoint()方法现在已经过时,并[AWS documentation][1]指出,我们应该通过一个建设者构建DynamoDB对象:

AmazonDynamoDBClient()已弃用。使用 AmazonDynamoDBClientBuilder.defaultClient()

这等StackOverflow post建议使用这种策略来实例化数据库连接对象:

DynamoDB dynamoDB = new DynamoDB(AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration(new EndpointConfiguration("http://localhost:8000", "us-east-1")).build()); 

Table table = dynamoDB.getTable("Movies"); 

但我得到的IntelliJ一个错误,DynamoDB是抽象的,不能被实例化。但是我找不到任何有关正确类的文档来扩展。

换句话说,我已经浏览了教程,SO和AWS文档,并且没有找到我认为是创建客户端的正确方法。有人可以提供一个有效的实现吗?我正在尝试使用本地DynamoDB(localhost端口8000处的端点)设置客户端。

回答

3

我想我可以在回答我自己的问题时采取刺探。使用DynamoDB Mapper的开发人员指南,您可以实现一个DynamoDB Mapper对象,该对象接受客户端并为您执行数据服务,如加载,查询,删除和保存(本质上是CRUD?)。这里是我发现有用的documentation

我创建了自己的类名为DynamoDBMapperClient与此代码:

private AmazonDynamoDB amazonDynamoDB = AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration(
      new EndpointConfiguration(amazonDynamoDBEndpoint, amazonAWSRegion)).build(); 

private AWSCredentials awsCredentials = new AWSCredentials() { 
    @Override 
    public String getAWSAccessKeyId() { 
     return null; 
    } 

    @Override 
    public String getAWSSecretKey() { 
     return null; 
    } 
}; 
private DynamoDBMapper mapper = new DynamoDBMapper(amazonDynamoDB); 

public DynamoDBMapper getMapper() { 
    return mapper; 
} 

基本上发生在端点和区域配置从一个属性文件,然后实例化与一个getter访问一个新的映射。

我知道这可能不是一个完整的答案,所以我没有答案,但至少这是一个开始,你们可以告诉我我做错了什么!

+0

Hi @Yo chen我有同样的问题。你如何实现这个Bean? – Victor

相关问题