spring bean中scope=prototype“的作用
???? 今天寫代碼時,遇到個問題,問題大概如下:在寫一個新增模塊,當各文本框等輸入值后,提交存入數據庫,跳到其它頁面,當再次進入該新增頁面時,上次輸入的數據還存在。
????? 經過檢查發現是,spring配置文件中,配置的<bean id="pActionVO" name="pActionVO" class="com.wisdom.lxgz.purchases.model.vo.PurchasesActionVO"/>沒有寫?scope="prototype"。默認是singleton單列模式,每次訪問時不會新建一個pActionVO,他任然會保留上次訪問的過記錄的信息。所以,我們在Spring配置Bean時,需要加上屬性scope=”prototype”或singleton=”false”。
???? singleton模式指的是對某個對象的完全共享,包括代碼空間和數據空間,說白了,如果一個類是singleton的,假如這個類有成員變量,那么這個成員變量的值是各個線程共享的(有點類似于static的樣子了),當線程A往給變量賦了一個值以后,線程B就能讀出這個值。因此,對于前臺Action,肯定不能使用singleton的模式,必須是一個線程請求對應一個獨立的實例。推而廣之,只要是帶數據成員變量的類,為了防止多個線程混用數據,就不能使用singleton。對于我們用到的Service、Dao,之所以用了singleton,就是因為他們沒有用到數據成員變量,如果誰的Service需要數據成員變量,請設置singleton=false。
??? 在新增頁面,原來s:property顯示的數據,要再后臺取到,我是配置了s:hidden.
?
轉載于:https://www.cnblogs.com/gexiaoshan/p/3401877.html
總結
以上是生活随笔為你收集整理的spring bean中scope=prototype“的作用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 对象内存布局 (4)
- 下一篇: pyvex 的正确安装方式