這是一個真實的案例
我還看好它的SecurityContextHolder
我可以很容易在系統任意一層得到用戶的信息
但是我在每一次要得到用戶信息的時候都寫上面的一段代碼
* get current login user info
* @return UserInfo
*/
protected UserInfo getUserInfo()
……{
return getUserContext()
}
/**//**
* get current login user context
* @return UserContext
*/
protected UserContext getUserContext()
……{
Authentication auth = SecurityContextHolder
return (UserContext) auth
}
這樣在其他的Service和Dao類裡可以通過 super
來得到用戶的信息
……{
private UserInfo user = super
public someMethod()
……{
int userID = this
String userName = this
//bla bla do something user userID and userNaem
}
}
這段代碼在單元測試的時候不會用任何問題
其根本原因是Spring的Bean在默認情況下是Singleton的
……{
public someMethod()
……{
int userID = super
String userName = super
//bla bla do something user userID and userNaem
}
}
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28799.html