springboot prototype設置多例不起作用的解決操作
大多數(shù)人會直接這樣寫:
@Bean
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public TestBean getTestBean() {
return new TestBean();
}
ConfigurableBeanFactory.SCOPE_PROTOTYPE的值就是prototype
但是發(fā)現(xiàn)Autowire的時候,每一個請求用的還是同一個單例對象,這是因為沒設置多例的代理模式的問題,改成如下配置就可以了:
@Bean
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE, proxyMode = ScopedProxyMode.TARGET_CLASS)
public TestBean getTestBean() {
return new TestBean();
}
補充知識:Spring注解@Scope("prototype")
今天發(fā)現(xiàn)一個問題:頁面查出來的記錄,其它業(yè)務對其進行修改以后,再查詢發(fā)現(xiàn)修改之前的記錄仍然還在,后來發(fā)現(xiàn)是Action沒有加@Scope("prototype")注解的原因。
Spring默認scope是單例模式,這樣只會創(chuàng)建一個Action對象,每次訪問都是同一個Action對象,數(shù)據(jù)不安全。
一個注冊的例子,如果沒加上這個注解,注冊完成后,下一個請求再注冊一次,Action里會保留上一次注冊的信息。
struts2是要求每次訪問都對應不同的Action,scope="prototype"可以保證當有請求的時候都創(chuàng)建一個Action對象。
以上這篇springboot prototype設置多例不起作用的解決操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
學習Java之如何正確地向上轉(zhuǎn)型與向下轉(zhuǎn)型
面向?qū)ο蟮牡谌齻€特征是多態(tài),實現(xiàn)多態(tài)有三個必要條件:繼承、方法重寫和向上轉(zhuǎn)型,在學習多態(tài)之前,我們還要先學習Java的類型轉(zhuǎn)換,本篇文章就來帶大家認識什么是類型轉(zhuǎn)換,看看類型轉(zhuǎn)換都有哪幾種情況,以及如何避免類型轉(zhuǎn)換時出現(xiàn)異常2023-05-05
springboot+redis過期事件監(jiān)聽實現(xiàn)過程解析
這篇文章主要介紹了springboot+redis過期事件監(jiān)聽實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03
springboot日期格式化全局LocalDateTime詳解
文章主要分析了Spring Boot中ObjectMapper對象的序列化和反序列化過程,并具體探討了日期格式化問題,通過分析Spring Boot的自動配置類JacksonAutoConfiguration,文章詳細說明了ObjectMapper對象的創(chuàng)建和配置過程2025-02-02

