【问题标题】:Spring AOP logging for HTTP request用于 HTTP 请求的 Spring AOP 日志记录
【发布时间】:2012-09-12 08:01:08
【问题描述】:

我正在尝试通过 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>

【问题讨论】:

    标签: spring logging aop


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-11-22
      • 2018-04-13
      • 2014-06-13
      • 2017-08-07
      • 2012-11-04
      • 2012-09-30
      • 1970-01-01
      • 1970-01-01
      • 2022-06-21
      相关资源
      最近更新 更多