SpringBoot--springboot簡述及快速入門

spring Boot是spring提供的一個子項目,用于快速構建spring應用程序

傳統方式:

image-20250511214728212

在眾多子項目中,spring framework項目為核心子項目,提供了核心的功能,其他的子項目都需要依賴于spring framework,在我們實際開發中,我們可以根據不同的業務需求來選擇不同的子項目,通過spring framework子項目把他們整合起來,從而構建一個spring應用程序。

隨著我們的業務需求越來越復雜,功能越來越強大,構建spring程序就會越來越麻煩,因此spring官方給我們提供了spring boot專門應用于spring項目的構建,

image-20250511215050703

傳統方式構建spring應用程序問題

  • 導入依賴繁瑣

例如,我們在編寫spring程序時,需要導入相關依賴,且是手動導入,而且這些依賴的jar包可能會造成沖突,jar包沖突的問題也需要去手動解決。非常麻煩。

  • 項目配置繁瑣

還需要些很多的配置文件,例如web.xml,springMVC.xml,applicationContext.xml等等

applicationContext.xml是spring項目中的核心配置文件,需要在其中聲明配置大量的Bean對象,比如數據庫連接池(DataSource),SQLSessionFactorytransactionManagermapperScannerConfigue(掃描映射文件配置)等等不止,這還只是整合mybatis需要的聲明配置,隨著項目功能越來越強大,需要配置的bean對象也越來越多,越來越繁瑣。

springBoot特性

  • 起步依賴(解決導入依賴繁瑣的問題)

本質上就是一個Maven坐標,整合了完成一個功能需要的所有坐標。

例如,我們要開發一個web應用,需要引入大量依賴,例如spring-core,spring-web,spring-context,spring-aop等等,在傳統方式構建時,需要手動導入,非常繁瑣。

而springboot提供了一個起步依賴,在spring-boot-starter-web這個坐標,它將完成web開發需要的所有的坐標全部整合起來放在spring-boot-starter-web這個坐標里,接下來我們在實際開發中,在需要使用web開發時就不需要導入以前如此多的依賴了,只需要引入springboot提供的起步依賴的坐標即可。這里主要借助了Maven傳遞依賴的特性。

  • 自動配置(解決配置繁瑣的問題)

遵循約定大于配置的原則,在boot程序啟動后,一些bean對象會自動注入到IOC容器中,不需要手動聲明,簡化開發。

在傳統項目創建中,spring整合MyBatis除了要導入大量依賴,還要在聲明配置Bean對象(SQLSessionFactoryBean、MapperScannerCofigurer)。

而在springboot項目中,只需要引入MyBatis的起步依賴,在其內部已經自動聲明需要的Bean對象,不需要在配置文件中手動的聲明了。

起步依賴+自動配置 = 快速構建spring應用程序

  • 其它特性

    • 內嵌的Tomcat、Jetty(無需部署WAR文件)

    以前開發的web應用程序需要打成war包,再去部署到我們安轉的Tomcat,Jetty這樣的服務器軟件上才能被瀏覽器訪問。而springboot提供了內嵌的Tomcat,即使用springboot構建的應用程序,啟動時內部的Tomcat會跟著啟動,并且將當前項目里的資源自動部署好。

    • 外部化配置

    傳統項目中的配置文件都在工程里,當前工程開發完畢后,打成jar包部署,但是如果一些配置發生了變化,需要在當前工程的配置文件里修改,修改完畢后重新打包并部署。比較繁瑣

    springboot提供了外部化的配置,將所有的配置文件都放在了外部的MATA-INF/spring.factories中,如果項目部署完畢之后,想要修改配置,只需要去修改項目外邊的配置文件即可,修改完畢后不需要重新編譯打包部署,可以直接重啟即可。

    • 不需要XML配置(使用properties/yml配置文件)

    傳統項目中的XML配置文件寫起來十分繁瑣復雜,

    在springboot項目中采用properties配置文件(鍵值對形式)或者yaml/yml配置文件()來編寫配置文件。十分簡便。

我們可以嘗試創建一個springboot項目

springBoot入門

需求:使用springboot開發一個web應用,瀏覽器發起請求/hello后,給瀏覽器返回字符串“hello world”

實現過程:

  • 創建Maven工程

  • 導入spring-boot-starter-web起步依賴

?<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
  • 編寫Controller

?package com.lyc.firstdemo.controller;?import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;?@RestControllerpublic class IndexController {@RequestMapping("/hello")public String index(){return "hello world";}}
  • 提供啟動類

image-20250512201529622

測試:

image-20250512202259184

測試成功,我們發現直接創建springboot項目的話,大多數需要的操作系統中已經自己完成了,,我們只需要創建Controller來控制網頁,以及導入web的起步依賴。其他的操作已經在底層自動完成了。由此看來,springboot項目確實十分便捷。

注意事項:在springboot項目中打包方式不需要使用war包,因為springboot項目中內嵌了Tomcat,打成jar包就行。

我們已經創建了一個springboot項目并成功測試,并發現springboot項目與普通的Maven項目好像區別不是很多,讓我們來嘗試利用Maven項目來達到springboot項目中的效果。

手動創建springboot項目

  • 創建Maven工程

  • 引入父依賴以及spring-boot-starter-web起步依賴

?<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.4.5</version></parent><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
  • 提供啟動類

?package com.lyc;?import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;?@SpringBootApplication //注解表示為springboot項目的啟動類public class SpringBootCreateManualApplication {public static void main(String[] args) {SpringApplication.run(SpringBootCreateManualApplication.class, args);//調用run方法啟動項目}?}
  • 提供controller類

?package com.lyc.controller;?import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;?@RestControllerpublic class IndexController {@RequestMapping("/hello")public String index(){return "hello world----------------niuhbi-----------";}}
  • 在瀏覽器中測試:

image-20250512203822477

測試成功。

希望讓大家對springboot項目有個大概的了解。謝謝大家!

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

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

相關文章

INT202 Complexity of Algroithms 算法的復雜度 Pt.7 NP-Completeness NP完全性

文章目錄 1.P與NP問題1.1 計算上難以解決的問題&#xff08;Hard Computational Problems&#xff09;1.2 決策問題和優化問題&#xff08;Decision/Optimization problems&#xff09;1.3 計算問題的正式定義1.4 復雜性類1.4.1 復雜性類 P P P1.4.2 證明&#xff08;Certifica…

websocketpp 安裝及使用

介紹 WebSocket 是從 HTML5 開始支持的一種網頁端和服務端保持長連接的消息推送機制。 傳統的 web 程序都是屬于 "一問一答" 的形式&#xff0c;即客戶端給服務器發送了一個 HTTP 請求&#xff0c;服務器給客戶端返回一個 HTTP 響應。這種情況下服務器是屬于被動…

Android NDK 高版本交叉編譯:為何無需配置 FLAGS 和 INCLUDES

引言&#xff1a;NDK 交叉編譯的演進 Android NDK&#xff08;Native Development Kit&#xff09;是開發高性能C/C代碼的核心工具鏈&#xff0c;而交叉編譯&#xff08;在x86主機上生成ARM架構代碼&#xff09;一直是NDK的核心功能。過去&#xff0c;開發者需要手動配置大量編…

AI+可視化:數據呈現的未來形態

當AI生成的圖表開始自動“美化”數據&#xff0c;當動態可視化報告能像人類一樣“講故事”&#xff0c;當你的眼球運動直接決定數據呈現方式——數據可視化的未來形態&#xff0c;正在撕裂傳統認知。某車企用AI生成的3D可視化方案&#xff0c;讓設計師集體失業&#xff1b;某醫…

基于Flink的用戶畫像 OLAP 實時數倉統計分析

1.基于Flink的用戶畫像 OLAP 實時數倉統計分析 數據源是來自業務系統的T日數據&#xff0c;利用kakfa進行同步 拼接多個事實表形成大寬表&#xff0c;優化多流Join方式&#xff0c;抽取主鍵和外鍵形成主外鍵前置層&#xff0c;抽取外鍵和其余內容形成融合層&#xff0c;將4次事…

Java游戲服務器開發流水賬(7)網絡通信簡介

在 Java 游戲服務器開發中&#xff0c;網絡通訊是核心組成部分&#xff0c;它主要負責客戶端與服務器之間的數據交換。 一、網絡通訊基礎 1. 網絡模型 C/S 架構&#xff1a;游戲服務器采用客戶端 / 服務器模式&#xff0c;客戶端向服務器發送請求&#xff0c;服務器處理請求…

使用ADB命令操作Android的apk/aab包

keystore文件轉換jks文件 操作步驟&#xff1a; 步驟1&#xff0c;生成P12文件&#xff1a; keytool -importkeystore -srckeystore [文件名].keystore -srcstoretype JKS -deststoretype PKCS12 -destkeystore [文件名].p12 步驟2&#xff0c;生成jks文件&#xff1a; keytool…

圖文展示HDFS、YARN、MapReduce三者關系

MapReduce架構概述 MapReduce將計算過程分為兩個階段&#xff1a;Map和Reduce &#xff08;1&#xff09;Map階段并行處理輸入數據 &#xff08;2&#xff09;Reduce階段對Map結果進行匯總 HDFS、YARN、MapReduce三者關系

DL00219-基于深度學習的水稻病害檢測系統含源碼

&#x1f33e; 基于深度學習的水稻病害檢測系統 — 智能農業的未來&#xff0c;守護農田的每一寸土地&#xff01; &#x1f69c; 完整系統獲取見文末 水稻病害檢測&#xff0c;一直是農業領域的一大難題。傳統的人工檢測不僅耗時耗力&#xff0c;還容易因經驗不足導致漏檢或誤…

github 上的 CI/CD 的嘗試

效果 步驟 新建倉庫設置倉庫的 page 新建一個 vite 的項目&#xff0c;改一下 vite.config.js 中的 base 工作流 在項目的根目錄下新建一個 .github/workflows/ci.yml 文件&#xff0c;然后編輯一下內容 name: Build & Deploy Vue 3 Appon:push:branches: [main]permi…

鴻蒙5.0項目開發——鴻蒙天氣項目的實現(介紹)

【高心星出品】 文章目錄 項目簡介&#xff1a;項目運行效果圖&#xff1a;主要功能&#xff1a;使用的技能點&#xff1a;開發環境&#xff1a; 項目簡介&#xff1a; 這是一個基于鴻蒙系統&#xff08;HarmonyOS&#xff09;開發的天氣應用&#xff0c;采用 ArkTS 語言開發&…

SpringCloud之Eureka基礎認識-服務注冊中心

0、認識Eureka Eureka 是 Netflix 開源的服務發現組件&#xff0c;后來被集成到 Spring Cloud 生態中&#xff0c;成為 Spring Cloud Netflix 的核心模塊之一。它主要用于解決分布式系統中??服務注冊與發現??的問題。 Eureka Server 有必要的話&#xff0c;也可以做成集群…

【氮化鎵】電子輻照下溫度對GaN位移閾能的影響

2024年,華東師范大學的彭勝國等人基于從頭算分子動力學(AIMD)方法,研究了低能電子束輻照下溫度對氮化鎵(GaN)位移閾能(TDE)的影響。實驗結果表明,在初始動能40至80 eV的范圍內,鎵(Ga)和氮(N)原子作為初級擊出原子(PKAs)引發的位移對溫度呈現不同的敏感性:Ga 的…

Java 中的數據類型誤導點!!!

在 Java 中&#xff0c;數據類型分為兩大類&#xff1a;基本類型&#xff08;Primitive Types&#xff09; 和 引用類型&#xff08;Reference Types&#xff09;。它們的存儲方式和行為完全不同。 1. 基本類型 Java 有 8 種基本數據類型&#xff0c;它們直接存儲值&#xff…

二次封裝 el-dialog 組件:打造更靈活的對話框解決方案

文章目錄 引言為什么需要二次封裝&#xff1f;封裝思路代碼實現1. 基礎封裝組件 (Dialog.vue)2. Vue中引入使用示例 封裝后的優勢進階優化建議 總結 引言 在 Vue 項目中&#xff0c;Element UI 的 el-dialog 是一個非常實用的對話框組件。但在實際開發中&#xff0c;我們經常會…

框架篇八股(自用)

框架篇 Spring框架中的bean不是線程安全的 Scope&#xff08;&#xff09; singleton單例 prototype多例 一個類中有可修改的成員變量需要考慮線程安全 bean沒有可變狀態&#xff08;service類&#xff0c;DAO類&#xff09; 某種程度單例bean是線程安全的 AOP面向切面編程…

Go語言安裝proto并且使用gRPC服務(2025最新WINDOWS系統)

1.protobuf簡介 protobuf 即 Protocol Buffers&#xff0c;是一種輕便高效的結構化數據存儲格式&#xff0c;與語言、平臺無關&#xff0c;可擴展可序列化。protobuf 性能和效率大幅度優于 JSON、XML 等其他的結構化數據格式。protobuf 是以二進制方式存儲的&#xff0c;占用空…

rust-candle學習筆記11-實現一個簡單的自注意力

參考&#xff1a;about-pytorch 定義ScaledDotProductAttention結構體&#xff1a; use candle_core::{Result, Device, Tensor}; use candle_nn::{Linear, Module, linear_no_bias, VarMap, VarBuilder, ops};struct ScaledDotProductAttention {wq: Linear,wk: Linear,wv: …

spark MySQL數據庫配置

Spark 連接 MySQL 數據庫的配置 要讓 Spark 與 MySQL 數據庫實現連接&#xff0c;需要進行以下配置步驟。下面為你提供詳細的操作指南和示例代碼&#xff1a; 1. 添加 MySQL JDBC 驅動依賴 你得把 MySQL 的 JDBC 驅動添加到 Spark 的類路徑中。可以通過以下兩種方式來完成&a…

web 自動化之 KDT 關鍵字驅動詳解

一、什么是關鍵字驅動&#xff1f; 1、什么是關鍵字驅動&#xff1f;&#xff08;以關鍵字函數驅動測試&#xff09; 關鍵字驅動又叫動作字驅動&#xff0c;把項目業務封裝成關鍵字函數&#xff0c;再基于關鍵字函數實現自動化測試 2、關鍵字驅動測試原理 關鍵字驅動測試是一…