Можно ли добавить PointCut в метод ModelAndView? - PullRequest
0 голосов
/ 30 апреля 2019

Я пытался использовать 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 Ответ

1 голос
/ 02 мая 2019

Я не являюсь пользователем Spring, но о Spring AOP я знаю, что вы можете применять его только к компонентам Spring.Класс ModelAndView не является производным от какого-либо класса компонентов ядра Spring и не аннотируется чем-либо, делающим его таким, это простой POJO.Таким образом, вы не можете использовать таргетинг Spring AOP.Лучше нацелить что-нибудь в пределах досягаемости Spring AOP.

Альтернативой может быть распаковка большого пистолета и использование полного AspectJ LTW (ткачество во время загрузки), которое не ограничивается компонентами Spring.

...