Java和@annotations

问题描述 投票:6回答:2

在使用Java注释时,我不太明白这一点。这是一个例子:

我创建一个@Log注释并添加一些功能(每个使用@Log注释的方法在执行方法之前运行一些日志)。

现在我正在创建一个像这样的新@SuperLog注释:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Log
public @interface SuperLog {
     ............
}

这个@SuperLog必须提供@Log所做的所有内容,以及一些特定于@SuperLog的额外内容。

不幸的是,当我执行一些使用@SuperLog注释的方法时,特定于@Log的日志不会执行。

我不明白为什么:@SuperLog用@Log注释的事实并不意味着它从@Log“继承”属性?不应该@SuperLog做@Log应该做的每一件事吗?

java spring java-ee annotations
2个回答
6
投票

正如这个question概述的那样,没有注释的继承。

除此之外:请记住,注释(主要)在运行时获得意义,因为某些框架会对其存在作出反应。

换句话说:您可以创建一个框架,以某种方式支持继承树附带的注释。但假设您正在使用某个现有框架,则必须接受此框架正在执行的操作。


1
投票

我猜你'执行一些带注释的方法@SuperLog'意味着使用'Spring AOP'。

正如GhostCat所说,inheritance取决于框架的实现。不幸的是,Spring AOP切入点还不支持元注释。

你可以关注this spring improvement

© www.soinside.com 2019 - 2024. All rights reserved.