2017-05-05 106 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

相關問題