По какой-то причине мой pointcut не срабатывает. Примечание. Я использую аспекты весеннего стиля, а не стиль AspectJ.
Фрагмент XML
<bean id="authenticationAspect" class="ssel.banking.security.AuthenticationAspect" />
<aop:config>
<aop:aspect ref="authenticationAspect">
<aop:pointcut id="interceptControllerInvocation"
expression="execution(* org.springframework.web.servlet.mvc.Controller+.handleRequestInternal(javax.servlet.http.HttpServletRequest, ..))
and args(request, ..)
and target(controller)"/>
<aop:around pointcut-ref="interceptControllerInvocation"
method="authenticationAdvice"/>
</aop:aspect>
</aop:config>
Класс, определенный моим bean-компонентом
import org.aspectj.lang.ProceedingJoinPoint;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class AuthenticationAspect {
public ModelAndView authenticationAdvice(ProceedingJoinPoint pjp, HttpServletRequest request, Controller controller) throws Throwable{
String URL = request.getRequestURL().toString();
String viewName = URL.substring(0, URL.length() - 4);
System.out.println(viewName);
return (ModelAndView) pjp.proceed();
}
}
Я что-то упускаю?
handleRequestInternal
не вызывается через границы bean-компонента (т. е. он вызывается из другого метода в bean-компоненте, напримерhandleRequest
, он не будет проксироваться, потому что это реентерабельный вызов. - person mkobit   schedule 20.11.2014