java - 检测方法执行链中的任何方法是否使用特定注释进行注释

标签 java spring grails groovy

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

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

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

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

最佳答案

也许你可以这样做:

@Aspect
@Component
public class EmployeeAspect {

    private bolean wasExecuted = false;

    @Before("@annotation(com.annotation.YourAnnotanion)") // or @After
    public void secExecution(){
        this.wasExecuted = true;
    }

//getter, setter
}

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

关于java - 检测方法执行链中的任何方法是否使用特定注释进行注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52405960/

相关文章:

java - 将 Netbeans 项目转换为 Eclipse 项目

java - Spring 将动态生成的值放入占位符中

java - 如何不将 Controller 与 View 关联? [ chalice ]

unit-testing - 在域类上模拟 “save”方法

Grails Service 无法创建 Sql 实例

java - JDBC连接: Access Denied for User even All Previlleges are Granted

java - 从适配器类到 Activity 的方法调用

java - Spring Boot 测试无法解决存储库依赖关系

java - Eclipse 中的通用键绑定(bind)

java - 如何在 Spring 禁用将 ZonedDateTime 字段的时区转换为 UTC,仅针对一个字段并保留所有其他字段?