Определить, был ли какой-либо метод в цепочке выполнения метода помечен конкретной аннотацией - PullRequest
0 голосов
/ 19 сентября 2018

Я хотел бы аннотировать некоторые методы, а затем глубже в цепочке выполнения иметь возможность проверить, был ли какой-либо метод на этом пути помечен аннотацией?

Не уверен, что аннотации способны на это?Я использую Spring, так что, возможно, AOP может помочь или, может быть, AST преобразования (я использую groovy).Что проще всего ...

Мой вариант использования - пометить некоторые методы пользовательской аннотацией, например, @UseReplicaIfAvailable, а затем на служебном уровне, когда я выполняю вызов sql, я могу решить, могу ли я использовать реплику db (Мне наплевать на свежесть данных) или нет ...

Я просто хочу избежать передачи какого-либо значения boolean через каждый вызов метода.

1 Ответ

0 голосов
/ 19 сентября 2018

Может быть, вы можете сделать что-то вроде этого:

@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 после завершения цепочки выполнения (вы можете сделать это, возможно,следуя за этой областью бобов и т. д.).Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...