2011-08-17 37 views
0

我想更好地瞭解,當它很有意義的使用Spring中的原型範圍如何和。看起來它與EJB世界中處理無狀態會話bean的方式類似(儘管EJB容器會從將創建的無狀態會話Bean池釋放實例,而不是按需創建新實例)。使用原型範圍和Spring服務門面和層次

我有那幾個基本問​​題:)從架構的角度來看

1,當它意義在一個典型的J2EE Web應用程序(Spring MVC的/ Hibernate或者JDBC模板DB使用原型作用域bean訪問)?

2)是否有建立類似這樣的彙集原型實例池的EJB服務器將與無狀態會話bean做的一個概念?

3)如果該服務門面(即在EJB類似於會話外觀)與原型範圍中創建,並會在處理來自Web層傳來的併發請求幫助?我如何控制創建的實例的數量(限制到某個可管理的數量,最好是將它們合併)?

回答

1

你想爲單身的服務,假設你的服務是無狀態的。這樣你每個服務只有一個實例,並且因爲它們是無狀態的,所以它們是線程安全的。

你想的東西像要求的動作原型(例如在支柱),所以一個新的對象被創建來處理每個請求。這些原型可以連接到單件服務。

documentation

非單身,在每一個爲特定 豆的請求時的時間 創建一個新的bean實例的豆部署結果的原型範圍。也就是說,這個bean被注入到另一個bean中,或者你通過容器上的getBean()方法調用來請求它。作爲 規則,使用所有有狀態bean的原型範圍和無狀態bean的單例 範圍。