AOP中@within和@annotation有什么区别

时间:2018-08-12 08:36:50

标签: spring aop spring-aop

@within

此PCD将匹配限制为具有给定注释的类型内的连接点:

@Pointcut("@within(org.springframework.stereotype.Repository)")

@注释

此PCD将匹配限制为连接点的主题具有给定注释的连接点。例如,我们可以创建一个@Loggable批注:

@Pointcut("@annotation(org.baeldung.aop.annotations.Loggable)")
public void loggableMethods() {}

这是否意味着@annotation仅适用于用户定义或自定义注释。 和@within用于标准注释

1 个答案:

答案 0 :(得分:1)

这可能是一个较旧的问题,但只是想添加答案以提高可见度。

正如评论中的JBNizet所述,javadoc提供了两者之间的明显区别:

  

@within:将匹配点限制为具有以下类型的连接点:   给定的注释(以   使用Spring AOP时给出给定的注释。

     

@annotation:将匹配限制为连接点   连接点(在Spring AOP中执行的方法)具有给定   注释。

来自https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#aop-pointcuts-designators