【发布时间】:2023-03-17 00:39:01
【问题描述】:
任何人都知道为什么显然不可能将 AOP 与带注释的 MVC 控制器一起使用? (见Post)。 我有一个@Controller,一旦我添加一个切入点,它就会停止工作。 问题不在于没有调用拦截器,而是@Controller 只是停止工作(在日志中,您可以看到“映射的 URL 路径 [/xx] 到处理程序'Yyy'”而不是“没有 URL已识别的路径”)。
我知道有一种机制可以通过 handlerMapping 向控制器添加拦截器,但我的问题是针对 AOP 拦截器的。带注释的控制器不只是 Spring 容器中的 pojo 和任何其他 pojo 一样吗?有什么区别?为什么?
@Controller
@RequestMapping("/user")
public class RestTestImpl implements RestTest {
@RequestMapping(value="/", method={RequestMethod.GET})
public @ResponseBody String deleteUsers(String arg) {
return "Xxxxx";
}
}
在我的 servlet-Context 中,我有:
<context:component-scan base-package="org.xxx.yyy"></context:component-scan>
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
. . .
</bean>
一切都很好。
但是当我添加时:
<aop:config>
<aop:pointcut expression="execution(* org.xxx.*(..))" id="pc1"/>
<aop:advisor advice-ref="hibernateInterceptor" pointcut-ref="pc1" order="2" />
</aop:config>
控制器不再是控制器(没有错误,只是停止绑定到指定的 URL)!
【问题讨论】:
标签: java spring spring-mvc controller spring-aop