我尝试使用PointCut在ModelAndView.setViewName
之后执行一些后期操作,但似乎从未触发:
@Aspect
@Component
public class TestAspect {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Pointcut("execution(* org.springframework.web.servlet.ModelAndView.*(..))")
public void testPointCut() {
}
@After("testPointCut()")
public void afterPointCut(JoinPoint joinPoint) {
logger.debug("afterPointCut");
}
}
如果我将execution
部分更改为自己的某个类,则该切入点有效。
那么将PointCut
添加到ModelAndView
的正确方法是什么?
答案 0 :(得分:1)
我不是Spring用户,但是我对Spring AOP的了解是您只能将其应用于Spring组件。类ModelAndView
不是从任何Spring核心组件类派生的,也不是由任何使之成为类的注解,它是一个简单的POJO。因此,您无法通过Spring AOP切入点定位它。您应该将目标定位在Spring AOP可以达到的范围内。
另一种选择是打开大枪并使用完整的AspectJ LTW(加载时编织),而不仅限于Spring组件。