2012-12-24 33 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

謝謝。我會嘗試。 –