Spring AOP pointcut for all methods in a controller

Goose picture Goose · May 12, 2014 · Viewed 24.9k times · Source

I want to run some code before every method in a Spring (3.2.3) @Controller. I have the following defined but it won't run. I suspect the pointcut expression is incorrect.

dispatcher-servlet.xml

<aop:aspectj-autoproxy/>
<bean class="com.example.web.controllers.ThingAspect"/>

c.e.w.c.ThingAspect

@Pointcut("execution(com.example.web.controllers.ThingController.*(..))")
public void thing() {
}

@Before("thing()")
public void doStuffBeforeThing(JoinPoint joinPoint) {
    // do stuff here
}

Answer

kriegaex picture kriegaex · May 12, 2014

Your pointcut expression is missing a return type like void, String or *, e.g.

execution(* com.example.web.controllers.ThingController.*(..))