再将对象转化为json返回给客户端的时候,为了节约网络流量,只返回给客户端指定的字段,于是考虑做一个通用的拦截器,由于controller最终返回的值与service可能不一致,所以这个拦截器不能坐在service上面,需要坐在controller上面。而拦截controller可以使用filter、spring interceptor、spring aop等技术,由于前两种是基于request与response做的拦截,对于我们这个需求不太合适,所以决定采用aop进行拦截controller。
项目结构: spring-mvc 4.0.3 + mybaties3.2.7 (annotation-driven)
发现问题: 按照通常的方法写了aop并进行配置,发现不起效果,如下代码: 这是aop类:
@Aspect
public class ControllerAspect {
@Before(\"execution(* com.test.ww.controller..*.*(..))\") public void beforeIntercept(){
System.out.println(\"before interceptor\"); }
@Around(\"execution(* com.test.ww.controller..*.*(..))\") public Object doAround(ProceedingJoinPoint pjp){
System.out.println(\"hello sb ````````````````````\"); try {
Object obj = pjp.proceed();
System.out.println(\"hello sb ``````I am well done``````````````\"); return obj;
} catch (Throwable e) { e.printStackTrace(); }
return null; } }
下面是在applicationContext.xml里面的配置:
解决办法: 这段代理的配置需要配置在fc-servlet.xml里面, 所以把上面这段配置挪到fc-servlet.xml里面,重启,ok。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务