springboot對象參數賦值變化

java springboot 項目, 通過接口修改Person類 name值, 在別的類中,注入Person類 @Resource Person person, 為什么拿不到 接口修改的 name的值,是Person類 不同的對象造成的 嗎

參數對象和注入對象區別

Person類,一個是作為control參數@RequestBody 一個是@Resource 注入

在Spring MVC應用中,當你遇到一個`Person`類既作為控制器(Controller)方法的`@RequestBody`參數接收請求體中的數據,又在另一個服務類中通過`@Resource`或`@Autowired`注解注入時,這兩者實際上是不同的實例,分別服務于不同的目的和生命周期管理。

### `@RequestBody`的用途

- 當你在控制器方法中使用`@RequestBody`注解時,Spring MVC會將HTTP請求的主體(body)內容自動綁定到方法的參數上。這里的`Person`對象是根據請求中發送的JSON或XML等數據動態創建的,僅存在于該請求的上下文中,用于處理該次請求的數據。

### `@Resource`或`@Autowired`的用途

- 當你在一個服務類中使用`@Resource`或`@Autowired`注解來注入`Person`類的實例時,Spring IoC容器會負責提供這個Bean的實例。默認情況下,這樣的Bean通常是單例(Singleton)的,意味著在整個應用運行期間,每次注入該類型的Bean時,都將獲得容器中同一個共享的實例。這個實例通常由Spring容器初始化時創建,并根據需要管理其生命周期。

### 為何兩者不共享狀態

由于通過`@RequestBody`解析的`Person`對象是針對每個HTTP請求新創建的,而通過`@Resource`注入的`Person`實例是由Spring容器管理的,可能是單例的,兩者存在于不同的作用域中,因此它們不共享狀態。即使你修改了通過`@RequestBody`接收到的`Person`對象的屬性,這不會影響到通過依賴注入獲取到的`Person`實例。

解決狀態同步問題

如果需要在服務層響應`@RequestBody`接收到的數據變更,并且確保其他地方注入的`Person`實例能夠感知到這些變更,你需要設計一個機制來同步這些狀態變化。這通常涉及數據庫操作、使用消息隊列或更新緩存等,而不是直接修改注入的Bean實例。例如,你可以將接收到的數據保存到數據庫,然后在需要的地方重新加載最新的數據。

在Spring Boot應用程序中,如果您在Controller中使用@RequestBody將JSON數據映射到Person對象,并在其他Service或Component中使用@Resource注入同一個Person對象,那么這兩個操作通常涉及不同的實例。

這是因為@RequestBody通常用于接收前端發送的請求體中的數據,并自動將JSON格式的數據映射到Java對象。這個對象是Spring根據請求內容創建的新實例,而不是Spring容器管理的Bean。

另一方面,@Resource@Autowired用于注入由Spring容器管理的Bean。如果Person類被標記為@Component@Service,那么Spring會創建一個Person類的實例,并將其注冊到容器中,以便在其他地方注入。

因此,如果您在Controller中通過@RequestBody接收了一個Person對象并修改了它的name屬性,這個修改不會影響到通過@Resource注入的Person實例,因為它們是兩個不同的對象。

如果您想要在Service或Component中使用通過Controller更新的Person對象,您需要將這個對象傳遞過去,而不是注入一個全新的實例。例如:

@Controller
public class PersonController {@Autowiredprivate PersonService personService;@PostMapping("/updatePerson")public ResponseEntity<?> updatePerson(@RequestBody Person person) {// 這里person是通過@RequestBody接收的新實例personService.updatePerson(person);return ResponseEntity.ok().build();}
}@Service
public class PersonService {// 這里注入的是Spring容器管理的Person實例@Resourceprivate Person person;public void updatePerson(Person updatedPerson) {// 將通過Controller更新的person對象的屬性復制到注入的person對象person.setName(updatedPerson.getName());// ... 其他屬性的復制}
}

在這個例子中,PersonServiceupdatePerson方法接收了一個通過Controller更新的Person對象,并將它的屬性復制到通過@Resource注入的Person對象中。這樣,您就可以在Service中使用更新后的數據了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44901.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44901.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44901.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

云WAF | 云waf基礎知識詳解

隨著數字時代的到來&#xff0c;網絡安全問題越來越突出&#xff0c; Web應用防火墻&#xff08;WAF&#xff09;是保障 Web應用安全的一道重要防線。在云計算環境下&#xff0c;云環路由云平臺&#xff08;WAF&#xff09;的出現&#xff0c;其融合了 WAF的能力和云計算的靈活…

【Linux】IP地址與主機名

文章目錄 1.IP地址2.特殊IP地址3.主機名4.域名解析 1.IP地址 每一臺聯網的電腦都會有一個地址&#xff0c;用于和其它計算機進行通訊 IP地址主要有2個版本&#xff0c;V4版本和V6版本 IPv4版本的地址格式是&#xff1a;a.b.c.d,其中abcd表示0~255的數字&#xff0c;如192.168.…

PS 2024【最新】中文白嫖版!,安裝教程,圖文步驟

文章目錄 軟件介紹軟件下載安裝步驟 軟件介紹 Photoshop&#xff0c;簡稱“PS” Adobe Photoshop&#xff0c;簡稱“PS”&#xff0c;是由Adobe Systems開發和發行的圖像處理軟件。Photoshop主要處理以像素所構成的數字圖像。使用其眾多的編修與繪圖工具&#xff0c;可以有效地…

利用AI快速上手新項目:開發者的高效指南

使用AI幫助開發者熟悉新的項目 在現代軟件開發中&#xff0c;開發者經常需要快速熟悉一個新的項目。項目可能包含復雜的結構和大量的文件&#xff0c;這對新手開發者來說無疑是一項挑戰。幸運的是&#xff0c;借助AI技術&#xff0c;我們可以更加高效地了解項目結構&#xff0…

道路運輸企業管理人員安全考核試題(附答案)

1、【多選題】《道路旅客運輸企業安全管理規范》規定&#xff0c;客運企業應當制定車輛動態監控操作規程。操作規程的內容包括( )。(ABCD) A、衛星定位裝置、視頻監控裝置、動態監控平臺設備的檢修和維護要求 B、動態監控信息采集、分析、處理規范和流程 C、違法違規信息統…

探索Facebook在人工智能領域的最新進展

在當今快速發展的科技領域中&#xff0c;人工智能&#xff08;AI&#xff09;作為一項關鍵技術&#xff0c;正在逐步改變著社交媒體的面貌。作為全球最大的社交平臺之一&#xff0c;Facebook積極探索和應用人工智能&#xff0c;以提升用戶體驗、增強平臺安全性并推動技術創新。…

Nodejs 第八十四章(ElasticSearch搜索)

ElasticSearch基本用法在之前的篇章介紹過了 這里不在過多闡述 模擬假數據 安裝庫 faker-js/faker 模擬假數據的一個庫非常好用支持中文使用中文 locale: [zh_CN], 設置即可生成名字&#xff0c;郵箱&#xff0c;手機號&#xff0c;id&#xff0c;年齡&#xff0c;性別生成完成…

ATT 和 GATT:數據表示和交換

背景介紹 BLE的通信和以太網&#xff0c;wifi有個重大的不同是&#xff1a;BLE通信的設備往往有特定的功能。且這個功能不會在運行中發生變化。 因此藍牙設備通信的時候&#xff0c;只能訪問預先定義好的&#xff08;也就是配置文件profile&#xff09;的功能。 那profile里寫…

批量制作word表格

問題背景 將excel表中的成績內容制作為成績單&#xff0c;每頁對應一個學員的成績&#xff0c;方便打印 代碼實現 ## 導入包 import pandas as pd from docx import Document from docx.enum.text import WD_ALIGN_PARAGRAPH,WD_LINE_SPACING# 讀取 Excel 內容 df pd.read_e…

APP接入聚合廣告SDK會影響上架應用市場嗎?

SDK是移動互聯網的基本技術接入方式&#xff0c;而廣告聚合SDK僅是實現廣告請求返回的功能&#xff0c;所以本身不會有任何問題&#xff0c;而各家應用市場會對具體的廣告展現方式等會有不同的要求&#xff0c;開發者可以根據具體的市場需要要求廣告平臺來配合進行相關設置即可…

精通 mysqldumpslow:深度分析 MySQL 慢查詢日志

引言 在數據庫管理與優化的領域中&#xff0c;慢查詢日志是識別性能瓶頸的金礦。mysqldumpslow 工具是挖掘這座金礦的利器&#xff0c;它幫助我們分析 MySQL 慢查詢日志并提取關鍵信息。本文將詳細介紹 mysqldumpslow 的核心選項&#xff0c;并通過實例展示如何使用這些選項來…

IP 地址:優化網絡游戲

IP地址和網絡游戲 在現代網絡游戲中&#xff0c;IP地址不僅用于服務器分配&#xff0c;還能針對性進行玩家匹配與優化網絡延遲。本文將探討IP地址在網絡游戲中的具體應用。 *服務器分配* 全球服務器分布&#xff1a; 網絡游戲需要在全球范圍內提供快速、穩定的連接&#xff…

筆記

https://qoj.ac/problem/8008 不難發現&#xff0c; 隨機到某些位置&#xff0c;之后最短路 先O&#xff08;nm&#xff09;預處理出能到的點&#xff0c; 考慮最小的隨機位置 首先&#xff0c;我們將求和式進行展開&#xff1a; ∑ j 1 ∞ j ( n ? i n ) j ? 1 i n \s…

libcoap3對接華為云平臺

文章目錄 前言一、平臺注冊二、引入源碼庫1.libcoap倉庫編譯2.分析網絡報文3.案例代碼4.編譯&運行 總結 前言 通過libcoap3開源代碼庫對接華為云平臺&#xff0c;本文章將討論加密與不加密的方式對接華為云平臺。 一、平臺注冊 首先&#xff0c;你需要在華為云平臺上創建…

文華財經盤立方博易大師boll布林帶指標公式源碼

TT:TIME>850&&TIME<1150; MID:MA(CLOSE,26);//求N個周期的收盤價均線&#xff0c;稱為布林通道中軌 TMP2:STD(CLOSE,26);//求M個周期內的收盤價的標準差 TOP:MID2*TMP2;//布林通道上軌 BOTTOM:MID-2*TMP2;//布林通道下軌 A:EVERY(ISDOWN,2)&&TT&&…

【鴻蒙學習筆記】使用axios進行HTTP數據請求

官方文檔&#xff1a;網絡管理開發概述 目錄標題 訪問淘寶公開接口&#xff08;測試數據&#xff09;第1步&#xff1a;module.json5 配置網絡授權第2步&#xff1a;下載axios第3步&#xff1a;源碼第4步&#xff1a;啟動模擬器第5步&#xff1a;啟動entry第6步&#xff1a;操…

python中from import的用法詳解

在Python中&#xff0c;from ... import ... 語句用于從指定的模塊、包或對象中導入特定的類、函數、變量等。這種導入方式可以讓你在代碼中使用這些元素時不需要每次都指定它們所屬的模塊名&#xff0c;從而簡化代碼&#xff0c;提高可讀性。下面詳細解釋這個語法的用法。 基…

Linux 常用命令 - mkdir【創建新目錄】

簡介 mkdir 源自于 make directory 的縮寫&#xff0c;該命令在 Linux 中用于創建一個或多個新目錄。默認情況下&#xff0c;它創建的是空目錄&#xff0c;如果待創建的目錄已存在&#xff0c;則會提示已存在而不能繼續創建&#xff0c;不會覆蓋已有文件。如果目錄不存在&…

論文AI痕跡過重怎么辦?AI降痕工具來幫忙

如何有效利用AI工具提高工作效率&#xff1f;探索這5款頂級AI寫作工具 不知道大家有沒有發現&#xff0c;隨著人工智能技術的快速發展&#xff0c;AI工具正逐漸滲透到我們日常生活的各個方面&#xff0c;極大地提高了我們的工作和學習效率。無論是AI寫作、AI繪畫、AI思維導圖&…

動態架構革新:Mojo模型自定義架構調整指南

動態架構革新&#xff1a;Mojo模型自定義架構調整指南 在機器學習模型部署的過程中&#xff0c;模型架構的靈活性和可定制性是至關重要的。Mojo模型&#xff0c;作為H2O.ai提供的一種模型部署格式&#xff0c;主要用于模型的序列化和預測。雖然Mojo模型本身不支持直接修改已部…