Spring AOP, точки запускаются в соответствии с именем переменной пути

Я хотел бы, чтобы один из моих pointcut срабатывал в соответствии с тем, как я называю переменную пути в своем URL.

Дело в том, что это строка, и я не хочу, чтобы мой pointcut срабатывал на каждой строке.

@Pointcut("@annotation(security.annotation.RequireValidUser) && args(datasetName, ..)")
private void methodAnnotatedForValidDatasetName(String datasetName) {
}

В моем случае этот pointcut успешно запускается в этом методе (что нормально):

public ResponseEntity<ApiKeyDTO> createApiKey(@PathVariable("name") String datasetName, @RequestBody ApiKeyDTO apiKeyDTO)

Но это также срабатывает здесь (что я не хочу):

public ResponseEntity<List<ApiKeyDTO>> findApiKeyFromDatasetLabel(@PathVariable("label") String datasetLabel)

Интересно, есть ли какой-нибудь обходной путь для меня, чтобы pointcut мог различать разные строки по именованию?

РЕДАКТИРОВАТЬ: Как предложил @kuhajeyan, я попытался использовать "argNames" следующим образом:

@Pointcut(value = "@annotation(security.annotation.RequireValidUser) && args(datasetName, ..)", argNames = "datasetName")

К сожалению, он не работает как задумано, он только указывает имя аргументов внутри pointcut.

1 ответ

Вы можете использовать argName, задокументированный здесь

argNames

@Pointcut(value="@annotation(security.annotation.RequireValidUser) && args(name,..)",  argNames="datasetName")
private void methodAnnotatedForValidDatasetName(String datasetName) {
}
Другие вопросы по тегам