我正在尝试让 Apache CXF JAX-RS 服务与 Spring AOP 一起使用。我创建了一个简单的日志记录类:
public class AOPLogger {
public void logBefore(){
System.out.println("Logging Before!");
}
}
我的 Spring 配置(beans.xml):
<aop:config>
<aop:aspect id="aopLogger" ref="test.aop.AOPLogger">
<aop:before method="logBefore" pointcut="execution(* test.rest.RestService.*(..))"/>
</aop:aspect>
</aop:config>
<bean id="aopLogger" class="test.aop.AOPLogger"/>
当调用方法 getServletRequest() 时,我总是在 RestService 中得到 NPE,该方法具有:
return messageContext.getHttpServletRequest();
如果我从 beans.xml 中删除 aop 配置或将其注释掉,一切正常。
我所有的实际 Rest 服务都扩展了 test.rest.RestService(这是一个类)并调用 getServletRequest()。我只是想根据 CXF JAX-RS 文档中的示例启动并运行 AOP。我究竟做错了什么?