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

标签 java spring aop pointcut

我希望根据我在 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/

相关文章:

java - 使用 @AspectJ 代码风格模拟注释继承

c# - 方法中的日志记录以何种方式容易出错且具有侵入性?

java - 重写有异常编译器错误的方法

java - 对于这种情况是否需要 Java 到 PHP 桥接器?

java - 应用程序服务器启动时出现 Spring Security LDAP 配置 BeanCreationException

java - Spring Data JPA中的查询语法问题

java - AspectJ 匹配带注释的类,但不匹配其子类

java - 寻找通用ArrayList中的最小值

java - 将 SWT 列表绑定(bind)到 ArrayList

java - 注入(inject) stub 服务代替 Autowiring 的 bean 进行单元测试