我正在尝试建议(用于记录目的)在带有 Aspect 的 Spring Web App 中使用 @RequestMappging 注释的方法。这是我的方面类:
@Aspect
public class InboundSpringPerfLoggerAspect extends AbstractInboundPerfLoggerAspect {
@Around(value = "execution(* *(..)) && @annotation(requestMapping)" , argNames = "pjp, requestMapping")
public Object doPerfLoggingForOperation(final ProceedingJoinPoint pjp, final RequestMapping requestMapping) throws Throwable {
return doPerfLogging(pjp, LOGGER_NAME);
}
我的 XML servlet 配置(MVC 上下文)文件是这样的:
<aop:aspectj-autoproxy/>
<!-- Logging aspect for inbound rest calls -->
<bean id="inboundServicePerfLoggerAspect" class="common.logging.aspect.InboundSpringPerfLoggerAspect"/>
<context:annotation-config />
<context:component-scan base-package="web.configuration" />
<context:component-scan base-package="web.controller" />
<context:component-scan base-package="web..service" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<bean name="xmlViewResolver" class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="order" value="1" />
</bean>
</beans>
然而,在调试模式下 Spring 的日志启动时显示相同的消息:
DEBUG [org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping] Rejected bean name 'inboundServicePerfLoggerAspect': no URL paths identified
当然,控制器类也没有得到适当的建议。他们工作得很好,但没有发生 Spring 代理 AOP。
问题出在哪里?
谢谢