2011-11-25 106 views
2

我正在創建一個具有兩個請求範圍的bean的類。豆子類註解爲:Spring請求範圍的bean - 所有字段爲空/空

@Component 
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS) 
public class RequestScopedBean1 { 
    // stuff 
} 

以及它們在我的類字段聲明:

@Resource 
private RequestScopedBean1 requestScopedBean1 

@Resource 
private RequestScopedBean2 requestScopedBean2 

該系統已用於全國各地的代碼庫,我沒有問題工作。但是,在我的類中,其中一個注入的bean(不是兩個,只有一個!)的所有字段都是null/empty。

我知道,僅僅在調試模式下查看請求範圍的bean的字段通常會顯示它們全都爲null,因爲Spring的代理如何管理這些bean。我也知道,應該使用getter和setter來訪問這些字段,而不是直接出於同樣的原因。但是,在intelliJ中使用Evaluate Expression函數時,該bean仍然顯示爲空/空。

我的類和每個bean類都在不同的項目中。工作bean是核心項目。破壞的bean在一個依賴於核心項目的項目中,而我的類在一個依賴於破壞的bean項目的項目中。

請讓我知道,如果您需要更多的信息來幫助我在這裏!

編輯我的XML配置文件的簡要說明:

有4個相關項目,讓我們稱他們爲「核心」,「網頁」,「普通」和「具體的」。每個應用程序都有自己對應的application-context.xml應用程序從「特定」項目構建的.war文件進行部署。在「特定」web.xml的標籤中,導入了「web」和「特定」的應用程序上下文。 'specific'application-context.xml的第一行導入'common'的應用程序上下文,這是我的新類所在的地方。 'web'application-context.xml的第一行導入'核心'應用程序上下文。工作請求範圍的bean駐留在'core'中;在'網絡'中的破碎的一個。我希望這一點很明確 - 如果不是,請告訴我!其他信息會有用嗎?

+1

你可以發佈你的web.xml和spring context xml以及不同的bean的包名稱。我想知道的是,如果您設置了不同的應用程序上下文,並且您的非工作bean是在不支持Web的上下文中創建的(在這種情況下請求範圍將不起作用)。 – pap

+0

我不認爲它是相關的,但你不做重定向或類似的東西,而不是一個前鋒? –

+0

我無法發佈他們,但我會盡我所能來形容他們: –

回答

0

它可能是你試圖在類中訪問的setter和getter的訪問說明符沒有指定(即默認)。嘗試將其更改爲公開並查看。