是否可以将PointCut添加到ModelAndView方法?

时间:2019-04-30 08:16:05

标签: spring-boot spring-mvc spring-aop

我尝试使用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的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

我不是Spring用户,但是我对Spring AOP的了解是您只能将其应用于Spring组件。类ModelAndView不是从任何Spring核心组件类派生的,也不是由任何使之成为类的注解,它是一个简单的POJO。因此,您无法通过Spring AOP切入点定位它。您应该将目标定位在Spring AOP可以达到的范围内。

另一种选择是打开大枪并使用完整的AspectJ LTW(加载时编织),而不仅限于Spring组件。