用于HTTP请求的Spring AOP日志记录

时间:2012-09-19 23:47:17

标签: spring logging aop

我试图通过aop在控制器中记录http请求。但是,在方面代码中,如果我

    httpServletRequest.getInputStream()

然后请求数据将无法在主流中检索。

所以,我在控制器中创建了另一个传递请求字符串

的公共方法
    public String processRequest(String data){...}

这个方法是记录“数据”的切入点。

但问题是,似乎这个方法的切入点无法通过Spring识别,这种方法没有记录。我需要帮助。

这是aop的定义

     <bean id="myLogger" class="com.my.MyLogger" />

<aop:config>
    <aop:aspect id="Log" ref="myLogger">
        <aop:around  method="log" pointcut="execution(public * com.my.controller.processRequest(..))" />
    </aop:aspect>
</aop:config>

1 个答案:

答案 0 :(得分:0)

Spring AOP默认使用AOP代理。所以你的原始bean用生成的代理bean包装,所有“外部”调用都通过代理。内部方法调用(在同一个bean中)旁路代理。

这里很好地解释了:http://static.springsource.org/spring/docs/2.5.5/reference/aop.html#aop-understanding-aop-proxies