是否可以使用Java中的一组注释创建自定义注释?

时间:2018-09-03 11:05:34

标签: java spring annotations spring-data-jpa lombok

我在系统中使用lombok和JPA。因此,对于实体类,它们全都看起来像:

@Getter
@Setter
@Entity
@NoArgsConstructor
@AllArgsConstructor
public class XxxEntity {
    ...
}

所以我的问题是可以创建一个自定义注释来将所有这些注释分组吗?

因此它看起来像:

@CustomAnnotation
public class XxxEntity {
    ...
}

当我使用@CustomAnnotation时,它将上面的所有注释应用于该类。

这可能吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

否,不可能。您可以使用新的注释将注释合并在一起,但是注释处理器将无法理解。来自Spring的@Caching注释只是注释处理器已知的注释的示例。如果您通过复制@Caching创建自己的注释,那么我敢打赌您会发现它不起作用。

从理论上讲,它可以作为注释处理器工作,可以读取任何注释并查看内部。但是,目前还不清楚应如何处理未知注释。在内部添加其他注释没有标准化的含义。

尤其是,这不适用于龙目岛。有一些问题要求这样做,例如here,但这很复杂。

最终的解决方案将是注释预处理器,它可以理解复合注释,并在普通注释处理器运行之前将其替换为它们的成分。但是没有这样的事情,而AFAIK也没有计划。