gpt4 book ai didi

java - Spring AOP,切入点根据路径变量名触发

转载 作者:搜寻专家 更新时间:2023-11-01 02:59:36 26 4
gpt4 key购买 nike

我希望根据我在 URL 中命名路径变量的方式来触发我的切入点之一。

事实是它是一个字符串,我不希望我的切入点在每个字符串上都被触发。

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

在我的例子中,这个切入点在这个方法中成功触发(没问题):

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

但是这里也触发了(我不想要):

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

我想知道是否有适合我的解决方法,以便切入点能够通过命名来区分不同的字符串?

编辑:正如@kuhajeyan 所建议的,我尝试按如下方式使用“argNames”:

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

不幸的是,它没有按预期工作,它只指定了切入点内的参数名称。

最佳答案

您可以使用 argName ,已记录 here

argNames

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

关于java - Spring AOP,切入点根据路径变量名触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39289997/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com