1

我是 Spring 框架的初学者。我已经实现了 Spring AOP 来记录方法执行时间。使用来自互联网的一些示例,我得到它适用于如下指定的服务接口。但是,如果我将表达式更改为非服务类,则相同的代码不起作用。下面给出了CXF配置。

<bean id="xbean" class="com........xServiceImpl" />

<jaxrs:server id="xServiceRS" address="/xRSService">
    <jaxrs:serviceBeans>
        <ref bean="xbean" />
    </jaxrs:serviceBeans>
</jaxrs:server>

<bean id="performanceLoggingAdvice" class="com......PerformanceLoggingAdvice" />

<aop:config>
    <aop:pointcut id="performanceLoggingPointcut"
        expression="execution(* com.....xService.*(..))" />
    <aop:advisor advice-ref="performanceLoggingAdvice"
        pointcut-ref="performanceLoggingPointcut" id="performanceLoggingInterceptorAdvisor" />
</aop:config>

我已经在堆栈溢出中搜索了类似的问题,但我没有得到对我的问题有用且具体的答案。知道可能是什么问题吗?如何让它适用于非服务类,例如 Utils.java ?

预先感谢您帮助我..

4

1 回答 1

1

Spring AOP 建议仅应用于声明为 Spring bean 的类的实例。让你的Util类成为一个 Spring bean,使用正确的切入点,它应该可以工作。

在这种情况下,您应该Util仅通过 Spring 应用程序上下文(通过调用其中一种ApplicationContext.getBean方法)来获取实例,而不是通过使用new.

于 2012-12-24T17:14:31.693 回答