SpringBoot系列—入門

目錄

1 第一個SpringBoot程序

1.1 創建SpringBoot項目

1.2 選擇SpringBoot版本和必要依賴

1.3 項目目錄結構

1.4 編寫Hello World代碼

1.5 運行程序

1.6 不需要IDEA也能創建SpringBoot程序

1.7 部署程序

1.8 pom.xml依賴問題

1.9 無Maven選項問題

1.10 SpringBoot版本和Java版本不匹配

2 Spring、SpringMVC和SpringBoot的區別和聯系


????????SpringBoot框架是為了簡化Spring程序的開發(是Spring程序開發的腳手架)。在介紹SpringBoot前,先來使用一下SpringBoot來寫第一個hello world程序。

1 第一個SpringBoot程序

1.1 創建SpringBoot項目

????????SpringBoot程序要部署的時候,不再像Servlet要打成War包,而是打成Jar包,這里后面會詳細說明。

????????注意:如果使用IDEA 社區版,需要安裝Spring Boot Help插件,才能創建SpringBoot程序。這里是直接使用專業版,內部集成了SpringBoot的插件。

1.2 選擇SpringBoot版本和必要依賴

????????選擇SpringBoot的版本,2.x版本對應Java 8,3.x版本對應Java 17。

????????注意:選擇版本經常會看到SNAPSHOT,這表示是快照,即不穩定版本。如果選擇了這個版本,SNAPSHOT版本的程序出現問題,可以修改后重新發包。如果選擇了不帶SNAPSHOT的版本,程序出現問題后,不能修改,如果要修改就要發布下一個版本號的程序。

????????同時要選擇Spring Web依賴,這是Spring MVC的依賴,SpringBoot程序是基于Spring MVC的。

1.3 項目目錄結構

????????首次創建SpringBoot項目,需要一定的時間,因為SpringBoot的相關依賴需要從中央倉庫下載到本地倉庫(注意配置Maven國內源加速下載)。

  • src/main/java:Java源代碼。
  • src/main/resources:靜態資源(包括html、css、js等文件)或SpringBoot的配置文件:application.properties。
  • src/test/java:測試代碼。
  • target:編譯后的文件路徑。
  • pom.xml:Maven配置文件。
  • .gitignore:git時要忽略的文件。

1.4 編寫Hello World代碼

@RestControllerpublic class UserController {@RequestMapping("/helloSpringBoot")public String Hello(){return "Hello,SpringBoot";}}

1.5 運行程序

????????在包含@SpringBootApplication注解的文件中點擊啟動的綠色箭頭,即可啟動。

????????觀察啟動日志可以發現,在上圖第4行,說明SpringBoot內置了Tomcat(傳統Tomcat部署Servlet程序webapps目錄下有多個項目,因此訪問路徑需要加上項目名因此SpringBoot項目訪問路徑不需要加上項目名),因此部署SpringBoot項目時我們不再打成War包部署在Tomcat的webapps目錄下。第6行說明了SpringBoot是對Servlet的封裝。倒數第2行說明了Tomcat的端口號是8080(想要切換端口號,在application.properties文件中添加server.port=端口號)。

????????注意:傳統Tomcat部署Servlet程序webapps目錄下有多個項目,因此訪問路徑需要加上項目名。而SpringBoot內置了Tomcat,因此SpringBoot項目訪問路徑不需要加上項目名。如果要同時啟動多個SpringBoot項目,更改每個項目Tomcat不同的端口號即可。

????????如果啟動成功,就能在對應的url上訪問到方法。如果輸出的是中文,也不會亂碼(這也是SpringBoot自動把字符集處理了)。

1.6 不需要IDEA也能創建SpringBoot程序

????????前往https://start.spring.io,打開頁面結構和IDEA的類似,創建好后可以下載到本地。

1.7 部署程序

????????把項目打成jar包后,在命令行直接使用java -jar即可運行程序。Windows和Linux都一樣。

1.8 pom.xml依賴問題

????????pom.xml文件中可能存在有些依賴包一直是紅色(沒有引入到項目中)的問題。解決思路:

????????1.去中央倉庫位于https://repo1.maven.org/maven2/和查詢網站https://mvnrepository.com查看包名是否存在,如果不存在改為正確的包名。

????????2.如果包是存在的,說明包還未下載到項目中,多次點擊Maven的刷新,看看是否解決問題。

????????3.如果多次刷新后無效,就去本地倉庫把對應的jar包刪除(有可能因為網絡問題導致jar包下載的不完整),再重新刷新下載jar包。

????????4.切換網絡,刪除本地倉庫的jar包再次下載。

????????5.隔段時間再下載

????????多次重復上述步驟,問題總會解決的。

1.9 無Maven選項問題

????????右鍵左側文件目錄中的項目名,選擇Add Framework Support,在打開的界面勾選Maven即可。

1.10 SpringBoot版本和Java版本不匹配

????????SpringBoot的2.x版本對應Java 8,3.x版本對應Java 17。如果在創建目錄的時候沒有注意,就會導致出現“無效目標發行版17”等問題。解決辦法:

????????1.重新創建項目。

????????2.修改項目中所有和Java版本相關的屬性,分別在:pom.xml、settings和Project Structure中。

????????上述地方仔細確認是否Java版本和SpringBoot版本匹配。

2 Spring、SpringMVC和SpringBoot的區別和聯系

????????(1)Spring(Spring Framework)是一個開發應用的框架,具有輕量級、一站式、模塊化等特征,目的是為了簡化企業級應用程序開發。

????????Spring具有:對象和依賴關系的管理、面向切面編程、數據庫事務管理、數據訪問、Web框架支持等功能。它具有高度可開放性,可以無縫支持第三方框架(數據訪問(Hibernate、JPA等)、Web(Struts、JSF等)),并且開發人員無需使用Spring的全部,需要什么功能使用什么功能即可。

????????(2)SpringMVC是Spring的一個子框架,全稱Spring Web MVC。它是基于Spring和MVC思想開發的一個Web框架,也就是說Spring可以開發各種應用程序,但是SpringMVC專精Web程序的開發。

????????其中的MVC思想是Model模型、View視圖、Controller控制器。View視圖可以理解為用戶交互界面,比如Web程序中的瀏覽器頁面。Controller控制器是處理網絡交互的請求和響應。Model模型負責業務邏輯,比如和數據庫的數據交互等等。但是MVC思想與時俱進,逐漸演化為現在的前后端分離的開發思想,前端負責頁面的展示,后端負責業務邏輯。而后端具體可以大概分為:Controller層、Service層和Dao層,其中Controller層就是MVC中的View和Controller的組合,而Service層和Dao層就是Model,這樣做是為了更好的項目結構解耦,形成高內聚、低耦合的項目。

????????拋去MVC思想,SpringMVC可以理解為Spring Web開發的一個大型庫,實現了對Servlet的封裝,提供了很多的包和注解便于Web項目的開發:比如URL地址映射、對請求和響應的處理。

????????(3)SpringBoot是對Spring的封裝,是Spring開發的腳手架,核心思想約定大于配置,目的是為了簡化Spring應用的開發流程,讓企業更關注業務邏輯,無需過多關注xml配置和底層實現,降低開發成本。

????????比如SpringBoot內部集成了Tomcat服務器,無需讓開發人員關系項目部署問題,直接運行jar包即可開啟服務。如果想要開發Web程序,引入SpringMVC框架即可。如果想要項目有和數據庫交互的能力,引入MyBatis框架即可。

????????總結:SpringMVC和SpringBoot都屬于Spring系列框架,SpringMVC簡化了Spring Web開發,SpringBoot簡化了Spring應用開發。

????????注意:Spring Web和Spring應用的關系,Spring Web只是Spring眾多應用的一部分,即我們使用Spring不止能開發Web程序,也可以開發其他應用程序,比如游戲、桌面應用等等。

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

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

相關文章

你的Prompt還有很大提升

與AI協作,Prompt(提示詞)是溝通的橋梁。一個優秀的Prompt能讓AI的輸出事半功倍,而一個模糊的Prompt則可能導致南轅北轍的結果。如果你覺得AI的回答不夠精準、缺乏深度,或者總帶著一股“AI味”,那很可能是你…

3、Configuring Topics

如果您在應用程序上下文中定義了KafkaAdmin bean,它可以自動向代理添加主題。為此,您可以將每個主題的NewTopicBean添加到應用程序上下文中。2.3版本引入了一個新的類TopicBuilder,使創建此類bean更加方便。以下示例顯示了如何執行此操作&…

FastAPI+React19開發ERP系統實戰第04期

一、效果預覽 1.1 首頁 1.2 首頁暗黑模式 1.3 登錄頁 1.4 登錄頁暗黑模式 二、搭建React開發環境 2.1 項目依賴 package.json {"name": "erp-web","version": "1.0.0","description": "ERP系統前端 - React 19&quo…

數據庫|了解達夢數據庫并做安裝前的準備

哈嘍,你好啊,我是雷工! 你都用過哪些數據庫? 使用過的數據庫中覺得哪個數據庫最好用? 你使用過達夢數據庫嗎? 最近在做的一個SCADA項目,要求信創版本,其中數據庫也要使用信創目錄…

Java驅動AI革命:Spring AI八篇進階指南——從架構基礎到企業級智能系統實戰

系列文章目錄 提示:下面列出了整個系列的完整目錄,建議收藏本篇作為總覽入口:本人將在7月份更新完畢 第一篇:Spring AI 概述與架構設計 第二篇:Spring AI 基本組件詳解——ChatClient、Prompt、Memory 第三篇&#x…

hysAnalyser --- 支持菁彩視聽雙Vivid媒體信息解析

摘要 本文主要介紹 hysAnalyser 支持HDR Vivid格式的分析案例,滿足用戶分析HDR vivid 和 Audio Vivid格式的需要。 現將 hysAnalyser 新版本(v1.1.000)發布給網友使用,希望能幫助到更多音視頻開發的愛好者。使用過程中,若遇到問題請您通過 G…

C++中NULL等于啥

文章目錄 **一、`NULL` 的標準定義****二、常見實現方式**1. **定義為整數 `0`**2. **定義為 `0L` 或 `(void*)0`**(較少見)**三、與C語言的關鍵區別****四、`NULL` 在C++中的問題**1. **重載函數匹配歧義**2. **模板參數推導錯誤****五、C++11+ 的替代方案:`nullptr`****六…

pyhton基礎【20】面向對象進階一

目錄 一.進階 類方法和靜態方法 屬性(Properties) 繼承和多態 抽象基類(Abstract Base Classes - ABCs) 魔術方法(Magic Methods) 組合和聚合 使用場景 二.私有屬性 實現對數據的隱藏 設置私有屬性 添加額外對屬性操作的方法 三.私有方法 實現對方法的隱藏 直接…

滲透信息收集- Web應用漏洞與指紋信息收集以及情報收集

目錄 1. 整體流程與目標概述 2. 常用工具及其用途 2.1 掃描與枚舉工具 2.2 情報與數據聚合工具 2.3 流量攔截與手工驗證工具 3. 詳細技術手法與步驟 3.1 準備階段 3.2 主動掃描與指紋識別 3.3 數據交叉驗證與漏洞確認 3.4 進一步滲透與隱蔽操作 4. 實際工作經驗與注…

ASP.NET代碼審計 MVC架構 SQL注入漏洞n

接口路由 /Maintenance/GetMaintenanceList MaintenanceController.cs代碼 Maintenance 控制器里面的 GetMaintenanceList 方法 接收參數 id 傳進 MaintenanceManager.GetMaintenanceList 方法調用 MaintenanceManager.cs代碼 這里 id 和 faultId 不一樣是不影響的 C# 按順序匹…

Python入門Day4

Python中數據的常用操作 數據拷貝 根據以下代碼可以看出l1和l2實際上都是對于數據的引用,當l1被改變了,l2也會發生同樣的改變,l2 l1只是將l2指向了l1所指向的地址。 >>> l1 [1,2,[3,4],[5,6]] >>> l2 l1 >>>…

計算機網絡中的常用表項梳理

核心表項對比 表項 全稱 工作層級 主要功能 涉及設備 典型生命周期 MAC表 媒體訪問控制表 數據鏈路層(二層) Mac地址和端口關系 交換機、網橋 動態學習 FDB表 轉發數據庫 (Forwarding DataBase) 數據鏈路層&#xf…

百度輪崗:任命新CFO,崔珊珊退居業務二線

文 | 大力財經2025 年 7 月 1 日,百度組織再次變革,崔珊珊退居二線引發的行業關注。百度創始人李彥宏發布的內部信,宣布的新一輪組織調整里,崔珊珊退居二線這一變動,格外引人矚目。崔珊珊,這位在百度人力資…

TAMPER-RTC(STM32F103) 引腳說明

我來查看ST官方手冊中關于TAMPER-RTC引腳的具體說明。 Ran tool Ran tool Ran tool Read file: doc/STM32F103VGT6/STM32F103VGT6_specification.txt Read file: doc/STM32F103VGT6/STM32F103VGT6_specification.txt Ran tool Read file: doc/STM32F103VGT6/STM32F103VGT6_spec…

BUUCTF在線評測-練習場-WebCTF習題[極客大挑戰 2019]HardSQL1-flag獲取、解析

解題思路 打開靶場、熟悉的感覺 上次是過濾了很多字符,用了雙寫繞過進行注入即可,這次進階了難度 先老規矩判斷下閉合 11 123 報錯提示 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version…

MyBatis動態SQL進階:復雜查詢與性能優化實戰

引言 在復雜業務場景中&#xff0c;SQL查詢往往需要動態拼接條件、復用代碼片段&#xff0c;并支持批量操作。MyBatis的動態SQL功能提供了強大的解決方案&#xff0c;本文將深入解析<choose>條件分支、<sql>片段復用、批量操作優化等核心技巧&#xff0c;助你寫出高…

@Transactional 注解失效的場景及原因分析

先分析一下 1&#xff0c;內部調用&#xff0c;原對象調用&#xff0c;不是代理對象調用 2&#xff0c;private方法&#xff0c;源碼中&#xff0c;只能是public方法 3&#xff0c;異常被捕獲了&#xff0c;事物攔截器&#xff0c;無法感知 4&#xff0c;子線程調用&#x…

使用unity創建項目,進行動畫制作

1. 創建unity項目 error: error CS0006: Metadata file Library/PackageCache/com.unity.collab-proxy2.8.2/Lib/Editor/PlasticSCM/log4netPlastic.dll could not be found error CS0006: Metadata file Library/PackageCache/com.unity.collab-proxy2.8.2/Lib/Editor/Plasti…

Centos系統及國產麒麟系統設置自己寫的go服務的開機啟動項完整教程

1、創建服務文件 在 /etc/systemd/system/ 下新建服務配置文件&#xff08;需sudo權限&#xff09;&#xff0c;例如&#xff1a; sudo nano /etc/systemd/system/mygo.service 如下圖&#xff0c;創建的mygo.service 2、創建內容如下&#xff1a; DescriptionThe go HTTP a…

Java面試寶典: IO流

1. 下面哪個流類屬于面向字符的輸入流() 選項: A. BufferedWriter B. FileInputStream C. ObjectInputStream D. InputStreamReader 答案:D 詳細分析: 字符流與字節流的本質區別: 字符流(Character Streams)以Unicode字符為單位操作數據,適用于文本處理字節流(Byte…