springboot prototype設(shè)置多例不起作用的解決操作
大多數(shù)人會直接這樣寫:
@Bean@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)public TestBean getTestBean() { return new TestBean();}
ConfigurableBeanFactory.SCOPE_PROTOTYPE的值就是prototype
但是發(fā)現(xiàn)Autowire的時候,每一個請求用的還是同一個單例對象,這是因為沒設(shè)置多例的代理模式的問題,改成如下配置就可以了:
@Bean@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE, proxyMode = ScopedProxyMode.TARGET_CLASS)public TestBean getTestBean() { return new TestBean();}
補充知識:Spring注解@Scope('prototype')
今天發(fā)現(xiàn)一個問題:頁面查出來的記錄,其它業(yè)務(wù)對其進行修改以后,再查詢發(fā)現(xiàn)修改之前的記錄仍然還在,后來發(fā)現(xiàn)是Action沒有加@Scope('prototype')注解的原因。
Spring默認scope是單例模式,這樣只會創(chuàng)建一個Action對象,每次訪問都是同一個Action對象,數(shù)據(jù)不安全。
一個注冊的例子,如果沒加上這個注解,注冊完成后,下一個請求再注冊一次,Action里會保留上一次注冊的信息。
struts2是要求每次訪問都對應(yīng)不同的Action,scope='prototype'可以保證當有請求的時候都創(chuàng)建一個Action對象。
以上這篇springboot prototype設(shè)置多例不起作用的解決操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 編程語言PHP在Web開發(fā)領(lǐng)域的優(yōu)勢在哪?2. 詳解Android studio 動態(tài)fragment的用法3. 圖文詳解vue中proto文件的函數(shù)調(diào)用4. 什么是python的自省5. 基于android studio的layout的xml文件的創(chuàng)建方式6. Spring Boot和Thymeleaf整合結(jié)合JPA實現(xiàn)分頁效果(實例代碼)7. 解決Android studio xml界面無法預(yù)覽問題8. Android如何加載Base64編碼格式圖片9. Vue封裝一個TodoList的案例與瀏覽器本地緩存的應(yīng)用實現(xiàn)10. Springboot Druid 自定義加密數(shù)據(jù)庫密碼的幾種方案

網(wǎng)公網(wǎng)安備