當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringMVC Controller单例和多例
生活随笔
收集整理的這篇文章主要介紹了
SpringMVC Controller单例和多例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
對于SpringMVC Controller單例和多例,下面舉了個例子說明下. 第一次:類是多例,一個普通屬性和一個靜態(tài)屬性。
第二次:類改為單例
第三次:類去掉@Scope注解
另外在其他方法里面打印
最終:盡量不要在controller里面去定義屬性,如果在特殊情況需要定義屬性的時候,那么就在類上面加上注解@Scope("prototype")改為多例的模式,以前struts是基于類的屬性進行發(fā)的,定義屬性可以整個類通用,所以默認是多例,不然多線程訪問肯定是共用類里面的屬性值的,肯定是不安全的,但是springmvc是基于方法的開發(fā),都是用形參接收值,一個方法結束參數(shù)就銷毀了,多線程訪問都會有一塊內(nèi)存空間產(chǎn)生,里面的參數(shù)也是不會共用的,所有springmvc默認使用了單例,所以controller里面不適合在類里面定義屬性,只要controller中不定義屬性,那么單例完全是安全的。springmvc這樣設計主要的原因也是為了提高程序的性能和以后程序的維護只針對業(yè)務的維護就行,要是struts的屬性定義多了,都不知道哪個方法用了這個屬性,對以后程序的維護還是很麻煩的。 參考:http://blog.csdn.net/qq_27026603/article/details/67953879 http://blog.csdn.net/ymr0717/article/details/52126804
?
結果:普通屬性:0.............靜態(tài)屬性:0 普通屬性:0.............靜態(tài)屬性:1 普通屬性:0.............靜態(tài)屬性:2 普通屬性:0.............靜態(tài)屬性:3 所以說:對于多例情況普通屬性時不會共用的,不會產(chǎn)生影響,對于靜態(tài)屬性會去共用這個屬性。第二次:類改為單例
?
?
結果:普通屬性:0.............靜態(tài)屬性:0 普通屬性:1.............靜態(tài)屬性:1 普通屬性:2.............靜態(tài)屬性:2 普通屬性:3.............靜態(tài)屬性:3 所以說:對于單例情況普通屬性和靜態(tài)屬性都會被共用。第三次:類去掉@Scope注解
?
?
結果:普通屬性:0.............靜態(tài)屬性:0 普通屬性:1.............靜態(tài)屬性:1 普通屬性:2.............靜態(tài)屬性:2 普通屬性:3.............靜態(tài)屬性:3 所以說:springmvc默認是單例的。另外在其他方法里面打印
?
?
輸出的結果是
?
?
跳到別的方法里面也并不會去取初始值,而是再去共用這個屬性。最終:盡量不要在controller里面去定義屬性,如果在特殊情況需要定義屬性的時候,那么就在類上面加上注解@Scope("prototype")改為多例的模式,以前struts是基于類的屬性進行發(fā)的,定義屬性可以整個類通用,所以默認是多例,不然多線程訪問肯定是共用類里面的屬性值的,肯定是不安全的,但是springmvc是基于方法的開發(fā),都是用形參接收值,一個方法結束參數(shù)就銷毀了,多線程訪問都會有一塊內(nèi)存空間產(chǎn)生,里面的參數(shù)也是不會共用的,所有springmvc默認使用了單例,所以controller里面不適合在類里面定義屬性,只要controller中不定義屬性,那么單例完全是安全的。springmvc這樣設計主要的原因也是為了提高程序的性能和以后程序的維護只針對業(yè)務的維護就行,要是struts的屬性定義多了,都不知道哪個方法用了這個屬性,對以后程序的維護還是很麻煩的。 參考:http://blog.csdn.net/qq_27026603/article/details/67953879 http://blog.csdn.net/ymr0717/article/details/52126804
轉載于:https://www.cnblogs.com/beijingstruggle/p/7766238.html
總結
以上是生活随笔為你收集整理的SpringMVC Controller单例和多例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法设计7—哈希表1
- 下一篇: asp.net 无法获取客户端请求的真实