アスペクトを備えたSpringWebアプリで@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サーブレット構成(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>
ただし、DEBUGモードで起動すると、Springからのログに同じメッセージが表示されます。
DEBUG [org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping] Rejected bean name 'inboundServicePerfLoggerAspect': no URL paths identified
そしてもちろん、コントローラークラスは適切にアドバイスされていません。それらは正常に機能しましたが、SpringプロキシAOPは発生しません。
問題はどこだ?
ありがとう