【问题标题】:Detect if any method in method execution chain was annotated with a specific annotation检测方法执行链中的任何方法是否使用特定注释进行了注释
【发布时间】:2018-09-19 12:32:42
【问题描述】:

我想注释一些方法,然后在执行链的更深处能够检查是否有任何方法被标记了注释?

不确定注释是否能够做到这一点?我正在使用 Spring,所以也许 AOP 可以提供帮助,或者 AST 转换(我正在使用 groovy)。什么是最简单的...

我的用例是用自定义注释标记一些方法,例如@UseReplicaIfAvailable 然后在服务层中,当我进行 sql 调用时,我可以决定是否可以使用副本数据库(我不关心数据的新鲜度)...

我只是想避免通过每个方法调用传递某种boolean 值。

【问题讨论】:

    标签: java spring grails groovy


    【解决方案1】:

    也许你可以这样做:

    @Aspect
    @Component
    public class EmployeeAspect {
    
        private bolean wasExecuted = false;
    
        @Before("@annotation(com.annotation.YourAnnotanion)") // or @After
        public void secExecution(){
            this.wasExecuted = true;
        }
    
    //getter, setter
    }
    

    这就是我想到的,另外你必须在执行链完成后将标志重置为 false 值(你可以通过链接这个 bean 范围等来做到这一点)。祝你好运。

    【讨论】:

    • 如果是web应用可以尝试使用request scope。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 2018-10-17
    相关资源
    最近更新 更多