2015-04-04 58 views
1

我有一個小的Spring MVC應用程序,其中一些類依賴於User對象。Spring MVC:User object bean best practive

我想將它聲明爲@Component,所以我可以從任何地方用@Autowired註解來訪問這個bean。

@Component 
public class MyUser implements User { 

    // private fields 
    // getters and setters 

    public void fillByName(String username) { 
     userDao.select(username); 
    } 

} 

很明顯,用戶對象應該是唯一的每個用戶。我使用Spring Security,所以在我的SecurityContextHolder中有用戶名,我可以使用它來初始化用戶對象。

初始化的最佳做法是什麼?我應該聲明它像會話範圍的bean嗎?或者我應該保持它作爲單身人士課程,只是爲每個請求更新所有領域?或者,也許我應該爲每個請求從Controller類創建一個新的用戶對象?

回答

2

我個人不喜歡將域對象作爲組件的想法。 我建議將MyUser作爲類,並通過UserService(UserDao)(這是一個組件)在需要的地方獲取此對象。 當域對象意識到DAO的想法時,它也不是一個好設計。

+0

好的,謝謝。但是,我應該通過UserDao爲Controller類中的每個請求創建User對象嗎?或者我必須在會話中存儲一次選定的用戶對象? – 2015-04-04 22:19:32

+0

如果您的應用程序未水平縮放,則將用戶保存在會話中是正常操作。如果您沒有使用DAO層的緩存,每次從數據庫獲取對象可能會很昂貴。 – Stan 2015-04-04 22:23:33

+0

而且,Controller類是創建我的User對象的正確位置嗎? – 2015-04-04 22:24:18