Spring aop方面: using ".." not working to replace parameters?

标签 spring spring-mvc spring-aop spring-web

我定义了以下切入点,效果很好。

@Pointcut("args(req, resp) && (execution(org.springframework.web.servlet.ModelAndView org.springframework.web.servlet.mvc.Controller+.*(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)))")

但是,如果我将其更改为以下切入点,则删除响应变量并将其替换为 ..:

@Pointcut("args(req) && (execution(org.springframework.web.servlet.ModelAndView org.springframework.web.servlet.mvc.Controller+.*(javax.servlet.http.HttpServletRequest, ..)))")

奇怪的是,切入点没有任何标记,并且永远不会被执行。

知道为什么会发生这种情况吗?

最佳答案

这是由于您的组合切入点的第一部分,即 args(req)。它与采用单个参数的方法匹配。

第二部分即 执行(org.springframework.web.servlet.ModelAndView org.springframework.web.servlet.mvc.Controller+.*(javax.servlet.http.HttpServletRequest, ..))

匹配至少有一个 HttpServletRequest 类型参数的方法。

但是Controller接口(interface)方法handleRequest需要两个参数。

将切入点的这部分args(req)更改为args(req,..)

@Pointcut("args(req,..) && (execution(org.springframework.web.servlet.ModelAndView org.springframework.web.servlet.mvc.Controller+.*(javax.servlet.http.HttpServletRequest, ..)))")

关于Spring aop方面: using ".." not working to replace parameters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40403697/

相关文章:

java - Spring AOP 注释不起作用

java - Spring @PropertySource 从错误的 @Configuration 文件加载

java - struts2 spring项目运行在jetty和tomcat上

spring - 将文件资源注入(inject) Spring bean

html - Spring Web 开发建议

java - 如何为扩展特定类的所有类指定单个切入点

java - spring boot 启动报错 BOOT-INF/classes not found

java - 方法的返回值能否保证类型安全?

java - Spring-MVC : How to ensure multiple users will be able to call a method in sequence

java - 获取@Configuration类中所有bean的切入点