2012-12-24 31 views
1

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

<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?

预先感谢帮助我..

+1

Utils.java是否符合bean定义?它有一个构造函数,getter/setters?从名字'Utils.java'中,我闻到一个具有几个静态函数的文件。如果是这种情况,你是否还想为Utils类创建一个对象? –

+0

嗨TJ,Utils.java与xService接口非常相似。我想知道即使我的xService也没有getter,setter和构造函数。我的Utils.java有公共方法,而不是静态方法... –

+1

你能发布错误吗?另外,你可以发布'xService'和'Utils'的相关部分吗? –

回答

1

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

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

+0

谢谢。我会尝试。 –