如何使用aspectj生成getters

时间:2011-06-23 04:31:15

标签: java aspectj

我有以下问题,我想知道是否有人知道解决方案:

我想使用aspectj或其他类似的字节码操作工具为某个类的每个子类中的每个私有字段动态生成特殊命名的getter。

我希望getter的名称基于相应的字段名称,但我可以决定使用一个方法获取字段名称字符串并返回一个值,只要不涉及反射。

2 个答案:

答案 0 :(得分:0)

你有没有看过Lombok?如果您有权访问源代码并且只是尝试保存类型,那么@Data注释可能就是您要查找的内容。

答案 1 :(得分:0)

在Matt的回答中,我建议你Lombok。 在类级别使用@Getter, @Setter注释,将在编译时生成基于所有非静态字段名称的相应getter / setter。

比手动注释类要好得多的是使用AspectJ的static crosscuttingpage in the official documentation)来全局添加这些注释。

在每个持久实体上声明@Getter和@Setter的示例:

import javax.persistence.Entity;
import lombok.Getter;
import lombok.Setter;

public aspect EntityAspect {
    declare @type: @Entity * : @Getter;
    declare @type: @Entity * : @Setter;
}

它要求您拥有源代码,或者在现有jar(现有库的工具)上使用aspectj进行编译。