【问题标题】:Get Class level annotation value in Spring AOP在 Spring AOP 中获取 Class 级别的注释值
【发布时间】:2020-05-16 01:15:48
【问题描述】:

我有一个类级别的注释

 @Dummy(value = 123)

我如何创建一个方面,该方面会被调用before 这个带注释的类的任何方法执行。我只想在方面的建议中打印注释的值。

【问题讨论】:

    标签: spring spring-boot spring-aop


    【解决方案1】:

    以下方面将达到相同的效果

    @Component
    @Aspect
    public class DummyAspect {
        @Before(value = "@target(dummy) && within(com.your.package..*)")
        public void before(JoinPoint jp, Dummy dummy) {
            System.out.println(dummy.value());
        }
    }
    

    within() - 是一个范围指示符,用于缩小要建议的类的范围。如果没有这个指示符,运行可能会产生不希望的结果,因为它也可能针对框架类。

    请通过@kriegaex 的this answer 详细了解指示符。

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

    【讨论】:

    • within designator 用于指定包或其子包之一中的任何连接点(仅在 Spring AOP 中执行方法)(com..*) 表示任何 com 包或其所有直接子包中的任何类型..* 需要一个根包(在我们的示例中为 com )才能使其成为有效的包引用。
    • 更多信息here.
    猜你喜欢
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2018-07-24
    • 2023-03-15
    相关资源
    最近更新 更多