相关疑难解决方法(0)

带有AOP拦截器的Spring 3 MVC @Controller?

任何人都知道为什么显然不可能将AOP与带注释的MVC控制器一起使用?(见邮政).我有一个@Controller,一旦我添加切入点就会停止工作.问题不在于拦截器没有被调用,而是@Controller只是停止工作(在日志中你可以看到,而不是"映射的URL路径[/ xx]到处理器'Yyy'"你得到一个"没有URL"确定的路径").

我知道有一种通过handlerMapping向控制器添加拦截器的机制,但我的问题是特定于AOP拦截器.注释控制器只是在Spring容器中像任何其他pojo一样pojos吗?有什么不同?为什么?

@Controller
@RequestMapping("/user")
public class RestTestImpl implements RestTest {
    @RequestMapping(value="/", method={RequestMethod.GET})
    public @ResponseBody String deleteUsers(String arg) {
        return "Xxxxx";
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的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>
Run Code Online (Sandbox Code Playgroud)

一切都很好.

但是当我添加:

    <aop:config>
        <aop:pointcut expression="execution(* org.xxx.*(..))" id="pc1"/>
        <aop:advisor advice-ref="hibernateInterceptor"  pointcut-ref="pc1" order="2" />
    </aop:config>
Run Code Online (Sandbox Code Playgroud)

控制器停止作为控制器(没有错误,只是它停止绑定到指定的URL)!

java spring controller spring-mvc spring-aop

11
推荐指数
2
解决办法
1万
查看次数

标签 统计

controller ×1

java ×1

spring ×1

spring-aop ×1

spring-mvc ×1