我想根据我在URL中命名路径变量的方式触发我的切入点之一。
事实是它是一个String,我不希望在每个String上触发我的切入点。
@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")
不幸的是,它不能像预期的那样工作,它只指定切入点内的参数名称。
答案 0 :(得分:3)
您可以使用argName,已记录here
argNames
@Pointcut(value="@annotation(security.annotation.RequireValidUser) && args(name,..)", argNames="datasetName")
private void methodAnnotatedForValidDatasetName(String datasetName) {
}