2013-05-27 72 views
0

我想爲Spring/facelets應用程序創建多選項卡(JavaScript選項卡)接口,並且我有s.c.窗口管理器,擁有窗口(標籤)數組。每個窗口(標籤)都包含Spring bean(會話範圍),它接收(注射)其他彈簧豆,例如用於商業服務,DAO豆等。我使用Primefaces p:tabView作爲facelets部件。如何創建初始化的Spring bean(在會話範圍內)

當用戶創建新選項卡時,應該創建新的Spring bean(作爲窗口/選項卡的一部分)並添加到窗口管理器bean(WindowManager.addWindow(...))中,該方法從p :命令按鈕,並創建窗口/選項卡和它的會話)。問題是 - 如何創建這個bean並初始化它(使用注入的bean)?一種解決方案可能是調用ctx.getBean(「beanName」),但我害怕使用它,因爲它有名字,而且這個名字似乎是唯一的。

可能編程創建的Spring Bean並不是很好的設計(它們應該自動創建,但是它們在處理Web請求時會自動創建,但Web服務器/ Spring上下文),但對我來說似乎是必需的。

回答

2

您必須定義一個範圍爲「原型」的bean,該設置將導致Spring上下文在每次調用context.getBean(「beanName」)時創建一個新的新實例。

要配置,你可以使用:根據您是否正在使用Java或XML配置

@scope("prototype") 

<bean id="beanName" class="com.foo.myBean" scope="prototype"/> 

。看看春季文檔的更多細節:

http://static.springsource.org/spring/docs/3.0.0.M3/reference/html/ch04s04.html

相關問題