思途Spring學習 0804

SpringBoot 核心概念與開發實踐

SpringBoot 是一個基于 Spring 框架的快速開發腳手架,通過約定大于配置的原則簡化了傳統 Spring 應用的初始化配置。其核心目標是整合 Spring 生態(如 SSM)并支持微服務架構開發。

控制反轉(IoC)與依賴注入(DI)

Spring 框架通過 IoC 容器管理對象的生命周期,開發者通過注解聲明依賴關系,容器自動完成依賴注入。

  • 字段注入:直接通過 @Autowired 注解字段,但缺乏靈活性(如無法注入不可變對象)。
  • Setter注入:通過 Setter 方法注入,支持動態修改依賴。
  • 構造器注入:推薦方式,保證依賴不可變且完全初始化,可省略 @Autowired 注解。
// 構造器注入示例
@Service
public class UserService {private final UserRepository repository;public UserService(UserRepository repository) {this.repository = repository;}
}

依賴注入注解
  • @Autowired
    • 默認按類型匹配,沖突時用 @Primary 標記首選 Bean。
    • 按名稱匹配需配合 @Qualifier("beanName")
  • @Resource
    • JDK 原生注解,支持按名稱(name)或類型(type)注入。
常用組件注解
  • @Component:通用組件標識。
  • @Service:業務邏輯層。
  • @Repository:數據訪問層(含異常轉換)。
  • @Controller/@RestController:控制層(后者默認響應 JSON)。

請求映射與參數處理

請求映射注解
  • @GetMapping@PostMapping 等:限定特定 HTTP 方法。
  • @RequestMapping:支持多方法,需手動指定 method 屬性。
    @RequestMapping(value = "/list", method = RequestMethod.GET, produces = "application/json")
    

參數接收方式
  1. Servlet API 對象:如 HttpServletRequestHttpSession
  2. 基本類型/包裝類:通過 @RequestParam 綁定查詢參數。
    public String getUser(@RequestParam(required = false, defaultValue = "1") int id)
    

  3. 路徑變量@PathVariable 提取 RESTful 風格路徑參數。
    @GetMapping("/user/{id}")
    public String getUser(@PathVariable Long id)
    

  4. JavaBean 自動綁定:請求參數名與 Bean 屬性匹配時自動填充。
  5. 請求域模型ModelModelMapMap 存儲視圖數據。
返回值處理
  • 視圖名稱:返回字符串默認解析為模板路徑(如 Thymeleaf)。
    public String list(Model model) {model.addAttribute("users", userService.findAll());return "user/list"; // 對應模板文件 user/list.html
    }
    

  • 重定向/轉發
    return "redirect:/user/list";  // 重定向
    return "forward:/user/detail"; // 轉發
    

  • JSON 響應@ResponseBody@RestController 將返回值序列化為 JSON。
  • ResponseEntity:自定義響應狀態碼與頭部。
    @GetMapping("/{id}")
    public ResponseEntity<User> getUser(@PathVariable Long id) {return ResponseEntity.ok().body(userService.findById(id));
    }
    


SpringBoot 整合 SSM

自動化配置
  • 啟動器依賴spring-boot-starter-web(Web)、spring-boot-starter-data-jdbc(JDBC)、mybatis-spring-boot-starter(MyBatis)。
  • 約定目錄src/main/resources/application.yml 替代傳統 XML 配置。
示例配置
# application.yml
spring:datasource:url: jdbc:mysql://localhost:3306/dbusername: rootpassword: 123456
mybatis:mapper-locations: classpath:mapper/*.xml

主啟動類
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

通過以上實踐,SpringBoot 顯著簡化了傳統 SSM 的配置復雜度,開發者可專注于業務邏輯實現。

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

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

相關文章

Hutool工具類:Java開發必備神器

Hutool工具類使用說明Hutool是一個Java工具類庫&#xff0c;提供了豐富的功能模塊&#xff0c;包括字符串處理、日期時間操作、IO流、加密解密、HTTP客戶端等。以下是一些常用模塊的具體使用方法。字符串工具&#xff08;StrUtil&#xff09;字符串處理是開發中的常見需求&…

Node.js中Buffer的用法

// Buffer 與字符串的轉換示例 // Buffer 是 Node.js 中用于處理二進制數據的類&#xff0c;字符串與 Buffer 之間的轉換是常見操作// 1. 從字節數組創建 Buffer 并轉換為字符串 // Buffer.from(array) 接收一個字節數值數組&#xff0c;創建對應的 Buffer let buf_4 Buffer.f…

【Java 基礎】Java 源代碼加密工具有哪些?

??博主介紹: 博主從事應用安全和大數據領域,有8年研發經驗,5年面試官經驗,Java技術專家,WEB架構師,阿里云專家博主,華為云云享專家,51CTO 專家博主 ?? 個人社區:個人社區 ?? 個人主頁:個人主頁 ?? 專欄地址: ? Java 中級 ??八股文專題:劍指大廠,手撕 J…

es的histogram直方圖聚合和terms分組聚合

你提到的這兩個 Elasticsearch aggs 聚合語句&#xff1a;第一種&#xff1a;histogram 直方圖聚合 "aggs": {"DayDiagram": {"histogram": {"field": "${FiledName}","interval": ${TimeInterval},"extende…

基于Java的AI/機器學習庫(Smile、Weka、DeepLearning4J)的實用

基于Java和AI技術處理動漫視頻 以下是一些基于Java和AI技術處理動漫視頻(如《亞久斗》)的實用案例和實現方法,涵蓋視頻分析、風格轉換、角色識別等方向。每個案例均提供技術思路和關鍵代碼片段。 視頻關鍵幀提取 使用OpenCV提取動漫視頻中的關鍵幀,保存為圖片供后續分析…

筆記本電腦聯想T14重啟后無法識別外置紅米屏幕

【原先是可以連接重啟后不行】按照以下步驟排查和解決&#xff1a;? 1. 基礎排查確認連接方式&#xff1a;檢查是否使用 USB-C轉DP/HDMI線 或 HDMI/DP直連&#xff0c;嘗試更換線纜或接口&#xff08;如換另一個USB-C口或HDMI口&#xff09;。測試顯示器&#xff1a;將紅米顯示…

vue+ts 基礎面試題 (一 )

目錄 1.Vue3 響應式原理 一、 響應式的基本概念 二、 核心機制&#xff1a;Proxy 和依賴追蹤 三、 觸發更新的過程 四、 代碼示例 五、 優勢總結 2.如何實現組件間通信&#xff1f; 一、父子組件通信 1. 父傳子&#xff1a;Props 傳遞 2. 子傳父&#xff1a;自定義事…

Spring AI實戰:SpringBoot項目結合Spring AI開發——提示詞(Prompt)技術與工程實戰詳解

&#x1fa81;&#x1f341; 希望本文能給您帶來幫助&#xff0c;如果有任何問題&#xff0c;歡迎批評指正&#xff01;&#x1f405;&#x1f43e;&#x1f341;&#x1f425; 文章目錄一、前言二、提示詞前置知識2.1 提示詞要素2.2 設計提示詞的通用技巧2.2.1 從簡單開始2.2.…

【后端】Java static 關鍵字詳解

在 Java 中&#xff0c;static 是一個修飾符&#xff0c;用于定義與類相關&#xff08;而非對象實例相關&#xff09;的成員。以下是核心知識點和用法&#xff1a;一、四大用途靜態變量&#xff08;類變量&#xff09; 作用&#xff1a;屬于類&#xff0c;而非實例。所有實例共…

算法訓練營DAY50 第十一章:圖論part01

98. 所有可達路徑 98. 所有可達路徑 【題目描述】 給定一個有 n 個節點的有向無環圖&#xff0c;節點編號從 1 到 n。請編寫一個程序&#xff0c;找出并返回所有從節點 1 到節點 n 的路徑。每條路徑應以節點編號的列表形式表示。 【輸入描述】 第一行包含兩個整數 N&#…

OpenCV:從入門到實戰的全方位指南

目錄 一、OpenCV 簡介 &#xff08;一&#xff09;特點 &#xff08;二&#xff09;應用場景 二、OpenCV 的核心模塊 &#xff08;一&#xff09;core 模塊 &#xff08;二&#xff09;imgproc 模塊 &#xff08;三&#xff09;video 模塊 &#xff08;四&#xff09;f…

如何在 Ubuntu 24.04 上安裝和配置 TFTP 服務器

了解如何在 Ubuntu 24.04 Linux 上安裝 TFTP 以執行基本的文件傳輸。 簡單文件傳輸協議(TFTP)是標準 FTP 的輕量級替代方案,用于在聯網設備之間傳輸文件。與 FTP 和 HTTP 相比,TFTP 更簡單,無需復雜的客戶端-服務器模型即可操作。這就是為什么該協議用于執行基本文件傳輸…

基于 AXI-Lite 實現可擴展的硬件函數 RPC 框架(附完整源碼)

AXI-Lite 實現RPC調用硬件函數服務 &#x1f44b; 本文介紹如何基于 AXI-Lite 總線設計一個通用的“硬件函數調用框架”。主機端&#xff08;PS&#xff09;只需通過寄存器寫入參數與啟動標志&#xff0c;即可觸發 PL 模塊執行指定算法邏輯&#xff0c;并將結果返回。 該機制本…

[spring-cloud: NamedContextFactory ClientFactoryObjectProvider]-源碼閱讀

依賴 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-commons</artifactId><version>4.3.0</version> </dependency>源碼 NamedContextFactory NamedContextFactory 類通過創建多個子…

HBase MOB技術特點及使用場景介紹

在 HBase 2.0 版本之前,雖然 HBase 能夠存儲從 1 字節到 10MB 大小的二進制對象 ,但其讀寫路徑主要針對小于 100KB 的值進行了優化。當面對大量大小在 100KB - 10MB 之間的數據時,傳統的存儲方式就會暴露出問題。例如,當存儲大量的圖片、文檔或短視頻等中等大小對象時,由于…

Ubuntu 配置密鑰+密碼登錄

目錄 1、密鑰生成 2、發送公鑰至 需要連接的服務器 3、選用私鑰登錄 1、密鑰生成 ssh-keygen -t rsa -b 4096 -C "angindem"2、發送公鑰至 需要連接的服務器 將.ssh中的id_rsa.pub 的密鑰&#xff0c;放在authorized_keys中 注意&#xff1a;.ssh 文件夾一定賦予…

谷歌瀏覽器Chrome 緩存遷移

步驟 1&#xff1a;準備數據遷移1. 關閉 Chrome 及所有后臺進程在任務管理器&#xff08;CtrlShiftEsc&#xff09;中結束所有 chrome.exe 進程。 2. 備份并移動原數據- 將 C:\Users\xxx\AppData\Local\Google\Chrome\User Data **整個文件夾**復制到新位置&#xff08;如 G:\…

Java中的RabbitMQ完全指南

Java中的RabbitMQ完全指南 1. 引言 什么是RabbitMQ RabbitMQ是一個開源的消息代理和隊列服務器&#xff0c;實現了高級消息隊列協議&#xff08;AMQP&#xff09;。它充當應用程序之間的消息中間件&#xff0c;允許分布式系統中的不同組件進行異步通信。RabbitMQ使用Erlang語言…

【MCAL】AUTOSAR架構下SPI數據異步DMA收發具體實現

目錄 前言 正文 1.依賴的硬件特性 1.1.SPI硬件特性 1.1.1. TXFIFO Single Move Mode 1.1.2. RXFIFO Single Move Mode 1.1.3. Move Counter模式 1.1.4. PT中斷 1.2.IR硬件特性 1.3.DMA硬件特性 1.3.1. DMA通道硬件請求 1.3.2. DMA循環Buffer 1.3.3. DMA Link List …

【Unity】協程 Async

協程 協程是 Unity 內置的異步機制&#xff0c;通過 yield 暫停執行&#xff0c;實現任務在多幀中分段執行。與普通函數不同&#xff0c;協程可在執行過程中掛起和恢復&#xff0c;呈現"并發"效果&#xff0c;但本質上仍運行于主線程。若在協程中進行耗時操作&#…