为什么 Spring AOP 中的 @PointCut 注解会被设计为只能在方法上使用呢?

发布于 2022-09-12 00:23:08 字数 1053 浏览 14 评论 0

如题,为什么不设计为也可以在字段上使用呢?这样设计的目的是是什么?

/**
 * Pointcut declaration
 *
 * @author <a href="mailto:alex AT gnilux DOT com">Alexandre Vasseur</a>
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Pointcut {

    /**
     * The pointcut expression
     * We allow "" as default for abstract pointcut
     */
    String value() default "";
    
    /**
     * When compiling without debug info, or when interpreting pointcuts at runtime,
     * the names of any arguments used in the pointcut are not available.
     * Under these circumstances only, it is necessary to provide the arg names in 
     * the annotation - these MUST duplicate the names used in the annotated method.
     * Format is a simple comma-separated list.
     */
    String argNames() default "";
}

比如说,我们定义 PointCut 往往是这样的:

@PointCut("...")
public void method() {}

为什么不设计为可以这样:

@PointCut
public String pointCut = "...";

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

巡山小妖精 2022-09-19 00:23:08

试了一下,在字段上使用 @PointCut 的话需要关注字段的类型、值等额外的不必要信息,而在方法上使用的话,就只需要一个方法名称就可以了。

这样一来,将 @PointCut 定义为只能在方法上使用即方便了使用者,也可以减少开发者的工作量。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文