【问题标题】:Using lombok annotations with DynamoDB annotations [aws-dynamodb-encryption]将 lombok 注释与 DynamoDB 注释一起使用 [aws-dynamodb-encryption]
【发布时间】:2019-10-14 23:16:11
【问题描述】:

我正在使用 AWS 加密客户端。下面的代码抛出错误为

错误:@DoNotTouch 不适用于字段

@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
@Getter
@DynamoDBTable(tableName = "jktest")
public class DataPoJo {


    private String title;

    @DynamoDBHashKey(attributeName = "dummyname")
    private String dummyname;

    @DynamoDBAttribute(attributeName = "example")
    private String example;


    @DoNotEncrypt
    @DynamoDBAttribute(attributeName = "title")
    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    @DoNotTouch
    @DynamoDBAttribute(attributeName="someProp")
    private String someProp;

}

但是,如果我给 @DoNotTouch 配置如下 [with getters and setters]

private String someProp;
@DoNotTouch
@DynamoDBAttribute(attributeName="someProp")
public String getSomeProp() {
    return someProp;
}

public void setSomeProp(String someProp) {
    this.someProp = someProp;
}

这工作正常。我猜 Lombok 生成的 getter 和 setter 无法被 AmazonEncryptionclient 识别

我正在关注这个 aws 文档:https://aws.amazon.com/blogs/developer/client-side-encryption-for-amazon-dynamodb/

有人遇到过这个问题吗?如何解决这个问题?

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb dynamodb-queries


    【解决方案1】:

    我们必须使用 lombok 的onX 功能。下面的代码修复了问题

    @Getter(onMethod = @_(@DoNotTouch))
     @DynamoDBAttribute(attributeName="someProp")
     private String someProp;
    

    【讨论】:

    • 小心产生注解的注解。它们破坏了 Dagger 等编译时注入框架。 (@_...)。
    猜你喜欢
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多