[SpringBoot]快速入門搭建springboot

? ? ? ? 默認有spring基礎,不會一行代碼一行代碼那么細致地講。

SpringBoot的作用

????????Spring Boot是為了簡化Spring應用的創建、運行、調試、部署等而出現的。就像我們整個SSM框架時,就常常會碰到版本導致包名對不上、Bean非法參數類型的一系列問題(原出處鏈接)。因為一種架構中有很多很多的jar包,而jar包之間的整合(需要導入那些包,有哪些包之間的整合需要額外的jar包[像mybatis-spring]、每種包的版本選擇)。

? ? ? ? SpringBoot提供了一堆依賴打包Starter,并已經按照使用習慣解決了依賴問題---習慣大于約定。Spring Boot默認使用tomcat作為服務器,使用logback提供日志記錄。致力于簡潔,讓開發者寫更少的配置,程序能夠更快的運行和啟動。

主要特點:

1.為基于Spring的開發提供更快的入門體驗

2.開箱即用,沒有代碼生成,也無需XML配置。同時也可以修改默認值來滿足特定的需求

3.提供了一些大型項目中常見的非功能性特性,如嵌入式服務器、安全、指標,健康檢測、外部配置等

4.SpringBoot不是對Spring功能上的增強,而是提供了一種快速使用Spring的方式

創建項目及注意事項

? ? ? ? 1.來到項目創建

????????

? ? ? ? ?2.選擇

我們左側選擇Springboot

? ? ? ? 3.在這個頁面選擇你想要添加的框架,同時SpringBoot版本不建議選太高


? ? ? ? ?之后不同的框架各有個的整合需求,這里只講SpringBoot本身的使用:

SpringBoot簡介

父項目parent

????????SpringBoot將所有的技術版本的常見使用方案都給開發者整理了出來,以后開發者使用時直接用它提供的版本方案,就不用擔心沖突問題了,相當于SpringBoot做了無數個技術版本搭配的列表,這個技術搭配列表的名字叫做parent。簡單講,版本管理這一塊springboot-parent會幫我們做好,而使用哪些框架還是我們自己定。

? ? ? ? 父項目指定使用<parent>標簽指定,如果你前面示例的方式,使用構建工具創建springboot項目,工具通常會給你加上。

? ? ? ? 我們ctrl+鼠標左鍵點進spring-boot-starter-parent:

? ? ? ? ?可以看到它還繼承了個spring-boot-dependencies。我們再同樣地點進spring-boot-dependencies,可以看到這里定義了很多版本號。當我們選擇了引入的框架之后,就會在這里獲取對應的版本號。

starter

????????SpringBoot關注到實際開發時,開發者對于依賴坐標的使用往往都有一些固定的組合方式,比如使用spring-webmvc就一定要使用spring-web。每次都要固定搭配著寫,非常繁瑣,而且格式固定。因此,springboot把所有的技術使用的固定搭配格式都給開發出來。用某個技術就不用每次寫一堆依賴了,開發者使用的時候直接寫上對應的搭配即可。對于這樣的固定技術搭配,SpringBoot給它起了個名字叫做starter。

starter:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

原本要寫的依賴:

<dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>6.1.18</version><scope>compile</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.1.18</version><scope>compile</scope></dependency>

引導類

? ? ? ? 講完配置和創建,下面講運行。目前springboot程序運行的入口就是SpringBoot工程創建時自帶的那個類,也就是帶有main方法的那個類,運行這個類就可以啟動SpringBoot工程。

????????SpringApplication會執行以下步驟:

1.推斷應用的類型是普通的項目還是Web項目

2.查找并加載所有可用初始化器,設置到initializers屬性中

3.找出所有的應用程序監聽器,設置到listener屬性中

4.推斷并設置main方法的定義類,找到運行的主類

注解

? ? ? ? 在我們的啟動類上面有這個注解@SpringBootApplication,這個注解繼承了@EnableAutoConfiguration注解和@ComponentScan:

? ? ? ? @SpringBootApplication是springboot2開始才有的注解,在springboot1使用的是原始的@EnableAutoConfiguration注解和@ComponentScan注解。

? ? ? ? 無論使用@EnableAutoConfiguration注解和@ComponentScan還是使用@SpringBootApplication,其目的都是為了快速配置啟動類。

? ? ? ? 也就是@SpringBootApplication是一個復合注解。現在我們來看原始的注解,每個注解都做了些什么。

@SpringBootConfiguration

? ? ? ? 我們看源碼:

????????
? ? ? ? ?可以看到@Configuration。在Spring項目中,我們的配置類就是使用該注解,用于生成IOC容器。

@EnableAutoConfiguration

????????@EnableAutoConfiguration 注解啟用自動配置,其可以幫助 SpringBoot 應用將所有符合條件的 @Configuration 配置都加載到當前 IoC 容器之中。

? ? ? ? 簡單描述,該注解的作用就是從 指定的配置文件,并將文件中的 EnableAutoConfiguration 對應的配置項,通過反射機制,實例化為對應標注了 @Configuration 的形式的IoC容器配置類,然后注入IoC容器。

@ComponentScan

????????@ComponentScan 對應于XML配置形式中的 <context:component-scan>,用于將一些標注了特定注解的bean定義批量采集注冊到Spring的IoC容器之中,這些特定的注解大致有:@Controller、@Component、@Service、@Repository。

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

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

相關文章

ROS-真機向虛擬機器人映射

問題描述 ROS里的虛擬機械臂可以實現和真實機械臂的位置同步&#xff0c;真實機械臂如何動&#xff0c;ROS里的虛擬機械臂就如何動 效果 步驟 確保庫卡機械臂端安裝有EthernetKRL輔助軟件和KUKAVARPROXY 6.1.101&#xff08;它是一個 TCP/IP 服務器 &#xff0c;可通過網絡實…

ubuntu--安裝雙系統

教程 BIOS設置 啟動盤生成和ubuntu安裝 boot option #1設置USB為第一啟動項 rufus下載 官網&#xff1a; 鏈接 點擊“鏈接”下面的按鈕&#xff0c;即可下載。(注意查看自己的電腦是x64還是x84) 網盤下載&#xff1a; 鏈接

Python項目--基于計算機視覺的手勢識別控制系統

1. 項目概述 1.1 項目背景 隨著人機交互技術的快速發展&#xff0c;傳統的鍵盤、鼠標等輸入設備已經不能滿足人們對自然、直觀交互的需求。手勢識別作為一種非接觸式的人機交互方式&#xff0c;具有操作自然、交互直觀的特點&#xff0c;在智能家居、游戲控制、虛擬現實等領域…

LabVIEW數據采集與傳感系統

開發了一個基于LabVIEW的智能數據采集系統&#xff0c;該系統主要通過單片機與LabVIEW軟件協同工作&#xff0c;實現對多通道低頻傳感器信號的有效采集、處理與顯示。系統的設計旨在提高數據采集的準確性和效率&#xff0c;適用于各種需要高精度和低成本解決方案的工業場合。 項…

java Springboot使用扣子Coze實現實時音頻對話智能客服

一、背景 因公司業務需求&#xff0c;需要使用智能客服實時接聽顧客電話。 現在已經完成的操作是&#xff0c;智能體已接入系統進行對練&#xff0c;所以本文章不寫對聯相關的功能。只有coze對接&#xff5e; 扣子提供了試用Realtime WebSocket&#xff0c;點擊右上角setting配…

棧和字符串,力扣.43.字符串相乘力扣1047.刪除字符串中的所有相鄰重復項力扣.844比較含退格的字符串力扣227.基本計算器II

目錄 力扣.43.字符串相乘 力扣1047.刪除字符串中的所有相鄰重復項 力扣.844比較含退格的字符串 力扣227.基本計算器II 力扣.43.字符串相乘 我們剩下的落兩個數字即可。 class Solution {public static String multiply(String num1, String num2) {int mnum1.length();int n…

Spring Boot單元測試實戰指南:從零到高效測試

在Spring Boot開發中&#xff0c;單元測試是保障代碼質量的核心環節。本文將基于實際開發場景&#xff0c;手把手教你如何快速實現分層測試、模擬依賴、編寫高效斷言&#xff0c;并分享最佳實踐&#xff01; 一、5分鐘環境搭建 添加依賴 在pom.xml中引入spring-boot-starter-te…

React狀態提升深度解析:原理、實戰與最佳實踐

一、狀態提升的本質認知 React狀態提升&#xff08;State Lifting&#xff09;是組件間通信的核心模式&#xff0c;其本質是通過組件樹層級關系重構實現狀態共享。與傳統父子傳參不同&#xff0c;它通過將狀態提升到最近的共同祖先組件&#xff0c;建立單向數據流高速公路。 …

https nginx 負載均衡配置

我的系統是OpenEuler。 安裝nginx yum install -y nginx 啟動&開機啟動 systemctl start nginx systemctl enable nginx 自定義conf配置文件 cat <<EOF >> /etc/nginx/conf.d/load_balancer.conf upstream backend {ip_hash; # 防止驗證碼驗證失敗server…

各種插值方法的Python實現

插值方法的Python實現 1. 線性插值&#xff08;Linear Interpolation&#xff09; 原理&#xff1a;用直線連接相鄰數據點&#xff0c;計算中間點的值。 實現&#xff1a; import numpy as np from scipy.interpolate import interp1dx np.array([0, 1, 2, 3, 4]) y np.arr…

重新定義戶外防護!基于DeepSeek的智能展開傘棚系統技術深度解析

從“手動操作”到“感知決策”&#xff0c;AI重構城市空間彈性 全球極端天氣事件頻發&#xff0c;傳統傘棚依賴人工展開/收納&#xff0c;存在響應滯后&#xff08;暴雨突襲時展開需3-5分鐘&#xff09;、抗風能力弱&#xff08;8級風損毀率超60%&#xff09;、空間利用率低等痛…

Redis 基礎和高級用法入門

redis 是什么&#xff1f; Redis是一個遠程內存數據庫&#xff0c;它不僅性能強勁&#xff0c;而且還具有復制特性以及為解決問題而生的獨一無二的數據模型。Redis提供了5種不同類型的數據結構&#xff0c;各式各樣的問題都可以很自然地映射到這些數據結構上&#xff1a…

常見數據庫關鍵字示例 SQL 及執行順序分析(帶詳細注釋)

示例 SQL 及執行順序分析&#xff08;帶詳細注釋&#xff09; 示例 1&#xff1a;基礎查詢&#xff08;含多表關聯、過濾、分組、排序&#xff09; SELECT -- 1. 選擇字段&#xff08;包含聚合函數和別名&#xff09;e.department, COUNT(e.employee_id) AS total_employees, …

設計模式--建造者模式詳解

建造者模式 建造者模式也屬于創建型模式&#xff0c;它提供了一種創建對象的最佳方式 定義&#xff1a;將一個復雜對象的構建和它的表示分離&#xff0c;使得同樣的構建過程可以創建不同的表示&#xff08;假設有不同的建造者實現類&#xff0c;可以產生不同的產品&#xff09…

PCB 過孔銅厚的深入指南

***前言&#xff1a;在上一期的文章中介紹了PCB制造的工藝流程&#xff0c;但仍然想在過孔的銅厚和PCB的過孔厚徑比兩個方面再深入介紹。 PCB銅厚的定義 電路中銅的厚度以盎司(oz)**表示。那么&#xff0c;為什么用重量單位來表示厚度呢? 盎司(oz)的定義 將1盎司(28.35 克)的銅…

如何配置 Conda 使用鏡像源加速

如何配置 Conda 使用鏡像源加速 為了提高使用 Anaconda 或 Miniconda 時包管理的速度&#xff0c;特別是在國內網絡環境下&#xff0c;可以通過配置鏡像源來實現更快的下載。以下是詳細的步驟說明&#xff1a; 1. 安裝 Conda&#xff08;如果尚未安裝&#xff09; 如果你還沒…

【k8s】k8s是怎么實現自動擴縮的

Kubernetes 提供了多種自動擴縮容機制&#xff0c;主要包括 Pod 水平自動擴縮&#xff08;HPA&#xff09;、垂直 Pod 自動擴縮&#xff08;VPA&#xff09; 和 集群自動擴縮&#xff08;Cluster Autoscaler&#xff09;。以下是它們的實現原理和配置方法&#xff1a; 1. Pod …

Reflex 完全指南:用 Python 構建現代 Web 應用的終極體驗

“寫 Python&#xff0c;就能構建 Web 前端。”——這不再是夢想&#xff0c;而是由 Reflex 帶來的現實。 過去&#xff0c;構建一個現代 Web 應用意味著你要學會前端&#xff08;React/JS/HTML/CSS&#xff09; 后端&#xff08;Flask/Django&#xff09; API 交互&#xff08…

Vue實戰(08)解決 Vue 項目中路徑別名 `@` 在 IDE 中報錯無法識別的問題

一、引言 ? 在 Vue 項目開發過程中&#xff0c;路徑別名是一個非常實用的特性&#xff0c;它能夠幫助開發者簡化文件引用路徑&#xff0c;提高代碼的可讀性和可維護性。其中&#xff0c; 作為一個常見的路徑別名&#xff0c;通常被用來指向項目的 src 目錄。然而&#xff0c;…

5.學習筆記-SpringMVC(P61-P70)

SpringMVC-SSM整合-接口測試 (1)業務層接口使用junit接口做測試 (2)表現層用postman做接口測試 (3)事務處理— 1&#xff09;在SpringConfig.java&#xff0c;開啟注解&#xff0c;是事務驅動 2&#xff09;配置事務管理器&#xff08;因為事務管理器是要配置數據源對象&…