springboot-響應接收與ioc容器控制反轉、Di依賴注入

1.想將服務器中的數據返回給客戶端,需要在controller類上加注解:@ResponseBody;

這個注解其實在前面已經使用過,@RestController其實就包含兩個注解:
@Controller

@ResponseBody

返回值如果是實體對象/集合,將會轉換為json格式響應

2.統一響應結果:

如果響應的結果格式不一致,會導致前端處理數據非常麻煩,所以我們可以使用一個result對象來存儲響應信息:

3.案例:


?

package new_start.new_start4.controller;import new_start.new_start4.pojo.Emp;
import new_start.new_start4.pojo.Result;
import new_start.new_start4.utils.XmlParserUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;
@RestController
public class EmpController {@RequestMapping("/listEmp")public Result list(){String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();System.out.println(file);List<Emp> empList = XmlParserUtils.parse(file, Emp.class);empList.stream().forEach(emp -> {String gender = emp.getGender();if ("1".equals(gender)) {emp.setGender("男");}else if("2".equals(gender)){emp.setGender("女");}String job = emp.getJob();if("1".equals(job)){emp.setJob("講師");} else if ("2".equals(job)) {emp.setJob("班主任");} else if ("3".equals(job)) {emp.setJob("就業指導");}});return new Result(1, "success", empList);}}

但是我們在實際開發中往往使用三層架構:

4.

具體代碼:

注意:在service層中需要有一個創建dao對象的步驟:

private EmpDao empdao = new EmpDaoImpl();

同樣的在controller層中有一個創建service對象的步驟

private EmpService empService = new EmpServiceImpl();

5.即使這樣分層架構,各層之間仍然有耦合性,比如我更改service實現類的名字,那么我就需要在controller層創建對象的時候改代碼,這樣不利于后期維護;

所以我們需要進行分層解耦,這需要用到控制反轉和依賴注入;

我們首先需要將各層實現類進行注解@Component, 將其交給ioc容器,然后使用注解@autowired進行依賴注入

聲明bean的時候可以用value來設定bean名,默認為類名首字母小寫;

想要聲明的bean生效,還需要進行掃描,使用注解@ConponentScan;

但是該注解包含在了啟動類聲明注解上@SpringBootApplication,掃描范圍是所在包及其子包

掃描格式:@ConponentScan({"dao", "com.itheima"}) 小括號包書名號,書名號內寫包名,之間用逗號隔開;

6.

@Autowired默認是根據類型進行注入的,如果有多個相同類型的bean,則可以使用@primary進行解決;

或者是@Qualifier

或者是@Resource

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

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

相關文章

將材質球中的紋理屬性對應的貼圖保存至本地

通過Texture2D的EncodeToPNG方法將紋理轉為圖片形式 material.GetTexture方法通過屬性名獲取紋理貼圖 material.SetTexture方法通過屬性名設置紋理貼圖 屬性名可在shader代碼中查看 using UnityEngine; using System.IO;public class TextureSaver : MonoBehaviour {public…

MySQL半同步復制配置和參數詳解

目錄 1 成功配置主從復制 2 加載插件 3 半同步復制監控 4 半同步復制參數 1 成功配置主從復制 操作步驟參考&#xff1a;https://blog.csdn.net/zyb378747350/article/details/148309545 2 加載插件 #主庫上 MySQL 8.0.26 之前版本: mysql>INSTALL PLUGIN rpl_semi_syn…

【筆記】Windows 成功部署 Suna 開源的通用人工智能代理項目部署日志

#工作記錄 本地部署運行截圖 kortix-ai/suna&#xff1a; Suna - 開源通用 AI 代理 項目概述 Suna 是一個完全開源的 AI 助手&#xff0c;通過自然對話幫助用戶輕松完成研究、數據分析等日常任務。它結合了強大的功能和直觀的界面&#xff0c;能夠理解用戶需求并提供結果。其強…

PCB制作入門

文章目錄 1 嘉立創使用旋轉 2元器件選擇MP2315SLM7815與LM7915 1 嘉立創使用 旋轉 空格旋轉 2元器件選擇 MP2315S MP2315S 是一款內置功率 MOSFET 的高效率同步整流降壓開關變換器。 其輸入電壓范圍為 4.5V 至 24V &#xff0c;能實現 3A 連續輸出電流&#xff0c;負載與…

2025——》NumPy中的np.logspace使用/在什么場景下適合使用np.logspace?NumPy中的np.logspace用法詳解

1.NumPy中的np.logspace使用: 在 NumPy 中,np.logspace函數用于生成對數尺度上等間距分布的數值序列,適用于科學計算、數據可視化等需要對數間隔數據的場景。以下是其核心用法和關鍵細節: 一、基礎語法與參數解析: numpy.logspace(start, stop, num=50, endpoint=True, ba…

Java實現中文姓名轉拼音生成用戶信息并寫入文件

中文姓名轉拼音 Java實現中文姓名轉拼音生成用戶信息并寫入文件&#xff08;shili域名版&#xff09;一、項目背景與功能簡介二、技術棧與核心組件2.1 主要技術2.2 功能模塊 三、核心代碼解析3.1 主函數邏輯&#xff08;流程控制&#xff09;3.2 拼音轉換模塊&#xff08;核心功…

Google car key:安全、便捷的汽車解鎖新選擇

有了兼容的汽車和 Android 手機&#xff0c;Google car key可讓您將Android 手機用作車鑰匙。您可以通過兼容的 Android 手機鎖定、解鎖、啟動汽車并執行更多功能。但是&#xff0c;Google car key安全嗎&#xff1f;它是如何工作的&#xff1f;如果我的手機電池沒電了怎么辦&a…

如何輕松將 iPhone 備份到外部硬盤

當您的iPhone和電腦上的存儲空間有限時&#xff0c;您可能希望將iPhone備份到外部硬盤上&#xff0c;這樣可以快速釋放iPhone上的存儲空間&#xff0c;而不占用電腦上的空間&#xff0c;并為您的數據提供額外的安全性。此外&#xff0c;我們還提供 4 種有效的解決方案&#xff…

AI煉丹日志-22 - MCP 自動操作 Figma+Cursor 自動設計原型

MCP 基本介紹 官方地址&#xff1a; https://modelcontextprotocol.io/introduction “MCP 是一種開放協議&#xff0c;旨在標準化應用程序向大型語言模型&#xff08;LLM&#xff09;提供上下文的方式。可以把 MCP 想象成 AI 應用程序的 USB-C 接口。就像 USB-C 提供了一種…

機器學習-線性回歸基礎

一、什么是回歸 依據輸入x寫出一個目標值y的計算方程&#xff0c;求回歸系數的過程就叫回歸。簡言之&#xff1a;根據題意列出方程&#xff0c;求出系數的過程就叫做回歸。 回歸的目的是預測數值型的目標值y&#xff0c;分類的目的預測標稱型的目標值y。 二、線性回歸 2.1線性…

解決RAGFlow(v0.19.0)有部分PDF無法解析成功的問題。

ragflow版本為&#xff1a;v0.19.0 1.解析的時候報錯&#xff1a;Internal server error while chunking: Coordinate lower is less than upper。 看報錯懷疑是分片的問題&#xff0c;于是把文檔的切片方法中的“建議文本塊大小”數值&#xff08;默認512&#xff09;調小&…

【前端】html2pdf實現用前端下載pdf

npm安裝完后&#xff0c;編寫代碼。 <template><div id"pdf-content">需要被捕獲為pdf的內容</div> </template><script> import html2pdf from html2pdf.js;export default {methods: {downloadPdf() {const element document.getE…

從零實現富文本編輯器#4-瀏覽器選區模型的核心交互策略

先前我們提到了&#xff0c;數據模型的設計是編輯器的基礎模塊&#xff0c;其直接影響了選區模塊的表示。選區模塊的設計同樣是編輯器的基礎部分&#xff0c;編輯器應用變更時操作范圍的表達&#xff0c;就需要基于選區模型來實現&#xff0c;也就是說選區代表的意義是編輯器需…

數論——質數和合數及求質數

質數、合數和質數篩 質數和合數及求質數試除法判斷質數Eratosthenes篩選法&#xff08;埃氏篩&#xff09;線性篩&#xff08;歐拉篩&#xff09; 質數有關OJ列舉P1835 素數密度 - 洛谷簡單的哥赫巴德猜想和cin優化 質數和合數及求質數 一個大于 1 的自然數&#xff0c;除了 1…

多商戶系統源碼性能調優實戰:從瓶頸定位到高并發架構設計!

在電商業務爆發式增長的今天&#xff0c;多商戶系統作為支撐平臺方、入駐商家和終端消費者的核心樞紐&#xff0c;其性能表現直接決定了商業變現效率。當你的商城在促銷期間崩潰&#xff0c;損失的不僅是訂單&#xff0c;更是用戶信任。 本文將深入剖析多商戶系統源碼性能優化的…

JDBC連不上mysql:Unable to load authentication plugin ‘caching_sha2_password‘.

最近為一個spring-boot項目下了mysql-9.3.0&#xff0c;結果因為mysql版本太新一直報錯連不上。 錯誤如下&#xff1a; 2025-06-01 16:19:43.516 ERROR 22088 --- [http-nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispat…

超標量處理器設計6-指令解碼

1. 指令緩存 指令緩存本質上是一個FIFO, 它能夠將指令按照程序中指定的順序存儲起來&#xff0c;這樣指令在解碼的時候&#xff0c;仍然可以按照程序中指定的順序進行解碼。指令緩存是超標量處理器中必須的部件&#xff0c;其原因有兩個&#xff1a; 1. 每周期可以取指的個數大…

基于 HT for Web 輕量化 3D 數字孿生數據中心解決方案

一、技術架構&#xff1a;HT for Web 的核心能力 圖撲軟件自主研發的 HT for Web 是基于 HTML5 的 2D/3D 可視化引擎&#xff0c;核心技術特性包括&#xff1a; 跨平臺渲染&#xff1a;采用 WebGL 技術&#xff0c;支持 PC、移動端瀏覽器直接訪問&#xff0c;兼容主流操作系統…

【Linux】shell的條件判斷

目錄 一.使用邏輯運算符判定命令執行結果 二.條件判斷方法 三.判斷表達式 3.1文件判斷表達式 3.2字符串測試表達式 3.3整數測試表達式 3.4邏輯操作符 一.使用邏輯運算符判定命令執行結果 && 在命令執行后如果沒有任何報錯時會執行符號后面的動作|| 在命令執行后…

【Python辦公】Excel簡易透視辦公小工具

目錄 專欄導讀1. 背景介紹2. 功能介紹3. 庫的安裝4. 界面展示5. 使用方法6. 實際應用場景7. 優化方向完整代碼總結專欄導讀 ?? 歡迎來到Python辦公自動化專欄—Python處理辦公問題,解放您的雙手 ?????? 博客主頁:請點擊——> 一晌小貪歡的博客主頁求關注 ?? 該系…