我正在努力让Apache CXF JAX-RS服务与Spring AOP一起使用。我创建了一个简单的日志记录类:
public class AOPLogger {
public void logBefore(){
System.out.println("Logging Before!");
}
}
My 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"/>
当调用Method getServletRequest()时,我总是在RestService中获得一个NPE,它具有:
return messageContext.getHttpServletRequest();
如果我删除了aop配置或从我的beans.xml中注释掉它,一切正常。
我所有的实际Rest服务都扩展了test.rest.RestService(这是一个类)并调用了getServletRequest()。我只是试图根据CXF JAX-RS文档中的示例启动并运行AOP。我做错了什么?
答案 0 :(得分:0)
您只需要让您的资源类使用方法
实现一些简单的接口@Context void setMessageContext(MessageContext mc){}
这将使CXF SpringAOPHelper能够发现方法