2010-08-08 57 views
0

有沒有人知道爲什麼當我嘗試圍繞Spring Security(v3.0)ProviderManager的「doAuthentication」方法創建一個建議時,我的應用程序在啓動時會引發異常?AspectJ對Spring安全性的建議安全性ProviderManager在啓動時拋出異常

我正在將我的spring身份驗證管理器bean的一個實例自動裝入控制器,當嘗試自動連接時,我的應用程序無法部署。

這裏是我的安全上下文XML是什麼樣子......

...<authentication-manager alias="authenticationManager"> ... 

這裏是我的控制器的相關部分...

@Autowired 
private ProviderManager authenticationManager; 

,這裏是我的建議聲明:

@After("execution(* org.springframework.security.authentication.ProviderManager.doAuthentication(..)) && args(authentication)") 

任何幫助將不勝感激!

+1

什麼是例外? – 2010-08-08 23:43:01

+0

好問題!!! Doh .... 這是一個例外,試圖使用ProviderManager自動調用上述控制器...但是,感謝您的帖子...我看到發生了什麼......我試圖自動裝入該字段,並將其標記爲私有... 韋爾普,這導致我更多的閱讀,我有點知道面向方面的遊戲...感謝您的帖子。 – 2010-08-09 00:26:04

+0

其實......這很奇怪,因爲我可以自動裝配它,直到我在ProvderManager的doAuthentication方法上創建了一個方面...這裏是我的Tomcat日誌中的例外.. – 2010-08-09 00:28:58

回答

2

我不知道從可用的信息,但我猜你正在使用Spring AOP,默認情況下使用JDK動態代理,所以你遇到了通常的問題,代理不保留原始類的類型(ProviderManager)。然而,代理將實現接口AuthenticationManager。嘗試使用這種類型的自動裝配,看看它是否有效。無論是或者你可以啓用使用cglib而不是動態代理的類代理。如果您使用的是Spring AOP名稱空間,則可以將代理目標類屬性設置爲true。

+0

謝謝,我想我錯過了春季文檔中的那部分內容。我感謝您的幫助。 – 2010-08-09 03:12:35