springboot prototype設置多例不起作用的解決操作
大多數人會直接這樣寫:
@Bean@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)public TestBean getTestBean() { return new TestBean();}
ConfigurableBeanFactory.SCOPE_PROTOTYPE的值就是prototype
但是發現Autowire的時候,每一個請求用的還是同一個單例對象,這是因為沒設置多例的代理模式的問題,改成如下配置就可以了:
@Bean@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE, proxyMode = ScopedProxyMode.TARGET_CLASS)public TestBean getTestBean() { return new TestBean();}
補充知識:Spring注解@Scope('prototype')
今天發現一個問題:頁面查出來的記錄,其它業務對其進行修改以后,再查詢發現修改之前的記錄仍然還在,后來發現是Action沒有加@Scope('prototype')注解的原因。
Spring默認scope是單例模式,這樣只會創建一個Action對象,每次訪問都是同一個Action對象,數據不安全。
一個注冊的例子,如果沒加上這個注解,注冊完成后,下一個請求再注冊一次,Action里會保留上一次注冊的信息。
struts2是要求每次訪問都對應不同的Action,scope='prototype'可以保證當有請求的時候都創建一個Action對象。
以上這篇springboot prototype設置多例不起作用的解決操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章:
1. Android打包篇:Android Studio將代碼打包成jar包教程2. Python使用urlretrieve實現直接遠程下載圖片的示例代碼3. SpringBoot+TestNG單元測試的實現4. Springboot 全局日期格式化處理的實現5. vue實現web在線聊天功能6. 解決Android Studio 格式化 Format代碼快捷鍵問題7. 完美解決vue 中多個echarts圖表自適應的問題8. JavaScript實現頁面動態驗證碼的實現示例9. Java使用Tesseract-Ocr識別數字10. JavaEE SpringMyBatis是什么? 它和Hibernate的區別及如何配置MyBatis
