检测方法执行链中是否有任何带有特定注释的方法

时间:2018-09-19 12:32:42

标签: java spring grails groovy

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

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

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

我只想避免在每次方法调用时传递某种boolean值。

1 个答案:

答案 0 :(得分: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
}

这就是我的想法,另外,您还必须在执行链完成后将back flag重置为false值(您可以通过链接此bean作用域来实现)。祝你好运。