SringBoot入門

文章目錄

  • SpringBoot入門
    • 一、關于:約定大于配置
    • 二、創建SpringBoot項目---起步案例
      • 創建SpringBoot項目
      • 案例
      • 創建項目方式2:通過aliyun網站創建
      • 創建項目方式3---基于官方地址創建
    • 三、配置項目
      • 項目結構
      • 自定義配置
    • 四、SpringBoot原理(重點)
      • 4.1.starter
      • 4.2、SpringBoot應用的POM文件(重要)
      • 4.3、Java配置方式
      • 4.4、SpringBoot自動配置
      • 4.5、全局配置文件
    • 五、多環境配置

什么是框架?
框架就是軟件的半成品。
在這里插入圖片描述

SpringBoot入門

一、關于:約定大于配置

SpringBoot采用了習慣優于配置/約定大于配置的理念快速的搭建項目的開發環境,我們無需或者進行很少的相關Spring配置就能夠快速的將項目運行起來。

即盡可能的減少配置,用約定去做配置,官方提供了很多約定,我們只需要在約定的地方配置即可。

什么是約定?如何理解?
比如我們的javaweb項目,配置文件必須放在resouces文件下,前端代碼必須放在webapps文件夾下 ,java代碼放在Java文件夾下。把對應的文件放在指定的位置就不用額外的配置了,springboot也是這種約定配置。

二、創建SpringBoot項目—起步案例

創建SpringBoot項目

創建的時候網址換一下更快,一般不會出問題

https://start.aliyun.com

在這里插入圖片描述
過程需要網絡暢通
在這里插入圖片描述
在這里插入圖片描述

等待項目加載完成。項目(就是web項目)結構:

在這里插入圖片描述
如果剛進去是報錯頁面,就是maven沒有正確添加,正確配置一下Maven就可以了

案例

package com.situ.bean;import lombok.*;import java.time.LocalDate;//使用lombok:在pom.xml里面引入依賴,添加getter和setter方法
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@ToString
public class Student {//數據模型(每一行student的數據存一行),用來保存數據://屬性的名字盡量要和數據庫里面的名字對應,同時遵循java的命名規范private Integer id;private String  stuId;private String name;}
package com.situ.controller;import com.situ.bean.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import java.beans.ConstructorProperties;@Controller //表示這是一個控制器類
@RequestMapping("/test") //為這個控制器類配置一個地址public class TestController {@ResponseBody  //能把對象轉成Json返回給前端@GetMapping("/hello")//為這個方法配置一個地址public Student hello(){//這個方法用于創建了Student對象,并添加@ResponseBody注解,把對象轉成Json返回給前端:Student zs = new Student(1, "22120", "zs");return  zs;//關于這個方法的訪問:在main方法里面啟動程序,然后在地址欄輸入localhost:8080/test/hello}}

在這里插入圖片描述
示例二:
在瀏覽器頁面輸入的參數,我們能夠接收,接收參數并進行封裝成對象,然后將對象返回json形式 :

package com.situ.controller;import com.situ.bean.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller//代表這是一個控制器
@RequestMapping("/test") //配置地址
public class Test2Controller {//現在要求在瀏覽器頁面輸入的參數,我們能夠接收,接收參數并進行封裝成對象,然后將對象返回json形式 :@ResponseBody@GetMapping("/hello2") //給這個方法配置地址public Student test2(Student student){//能自動將前端發過來的數據映射到對象的屬性,前提:前端傳參的參數名和屬性名要完全一致。System.out.println(student);return student;//將返回數據轉成Json}
}

在這里插入圖片描述
在這里插入圖片描述

創建項目方式2:通過aliyun網站創建

網址:https://start.aliyun.com/
在這里插入圖片描述
添加我們所需要的東西就行:比如:
在這里插入圖片描述

在這里插入圖片描述
獲取源碼
在這里插入圖片描述
在這里插入圖片描述
解壓縮就能看見這是一個web項目,用我們的IDEA打開就行了。是可以正常啟動的。

創建項目方式3—基于官方地址創建

也可以通過默認地址創建—基于官方地址創建。版本是3.x,但是經常出問題,所以有人發明了start.springboot.io,可以將地址換成這個,和官網的其實一樣
同樣也能通過官網直接創建項目

三、配置項目

項目結構

在這里插入圖片描述
注意:我們自定義的代碼、包和啟動類是平級的,我們寫SpringBoot項目,Java代碼一定要寫在和啟動類平級或者寫在和啟動類平級的包里面,這樣才能生效。

寫在其它地方也是可以的,但是需要額外配置很多東西。

靜態資源:html/css/js/圖片… 放在static文件夾下。

templates:不能放jsp(圖片寫錯了),能放thymeleaf。是放動態資源的

自定義配置

# 應用服務 WEB 訪問端口tomcat的端口號
server.port=8080# 自定義配置:添加上下文路徑:
server.servlet.context-path=/start
#那么項目的訪問路徑就變成了:localhost:8080/start/...
#目前就是變成了:localhost:8080/start/test/hello

在這里插入圖片描述

四、SpringBoot原理(重點)

為什么能簡化整合(不用寫那么多配置)?為什么坐標不用寫版本?

4.1.starter

一個starter就是一個開發場景的支持( 依賴(jar包) + 配置)。SpringBoot為我們提供了簡化企業級開發絕大多數場景的支持(提供了多個starter),
我們在進行項目開發的過程中只需引入對應的starter(創建SpringBoot應用時可選擇),
相關的依賴和配置就會被內置到項目中(消除人工配置)。

原來的spring和其它框架整合,需要寫很多配置,現在有了starter,starter里面自帶配置,就不用自己寫了。
這個配置寫了,只是不用我們程序員自己寫了,由官方開發人員寫好了。

也就是說用springboot去整合其他的框架的時候,我們要去找對應的starter,有了starter,jar包和配置都有了。通用的約定配置他可以寫,但是一些特定的比如連接數據庫的四大參數他不能寫 ,那這種就寫在了自定義配置部分。

在這里插入圖片描述

4.1.1、starter依賴
一個starter依賴表示的不是一個依賴,而是某種開發環境所需的一組依賴

Spring Web — spring-boot-starter-web
MyBatis Framework — mybatis-spring-boot-starter
依賴:

在這里插入圖片描述

4.1.2、starter配置
pom文件中引入的starter除了導入依賴,還引入了配置

配置用被@Configuration標注的配置類表示,配置在配置類中進行配置
配置類中有被@Bean標注的方法,用來生成特定的對象并讓SpringIOC容器進行管理
通過以上的操作,大部分配置用戶就不用自己進行配置了。

以后的開發中,如果需要用到哪個模塊,就去導入對應的starter。

配置:

在這里插入圖片描述

4.2、SpringBoot應用的POM文件(重要)

以前都需要寫GAV坐標,現在我們都不需要寫GAV坐標了。其實GAV版本是有的,原因:

4.2.1、基于Spring官方服務器創建的SpringBoot應用

繼承spring-boot-starter-parent.pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- SpringBoot應用中的pom 繼承了spring-boot-starter-parent.pom --><!-- spring-boot-starter-parent.pom又繼承了spring-boot-dependencies.pom--><!-- 在spring-boot-dependencies.pom已經對主流的框架的版本進行了聲明 --><!-- 繼承父工程:就繼承父工程里面所有的配置--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.4</version><relativePath/> </parent></project>
引入了maven對springboot應用支持的插件spring-boot-maven-plugin<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>tech.code2048.springboot.demo.SpringbootDemo1Application</mainClass><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins>
</build>

分析

pom工程繼承,繼承了父工程之后就能夠使用父工程中的“配置”;
我們自己創建的SpringBoot工程繼承自spring-boot-starter-parent這個父工程;
spring-boot-starter-parent繼承的spring-boot-dependencies;
spring-boot-dependencies里面有dependencyManagement

dependencyManagement的作用?
1.聲明了相關jar包的版本(只是聲明,沒有導入的作用)
2.如果在pom.xml文件中引入了該jar包不指定版本,就使dependencyManagement聲明的版本。

3.如果聲明的版本不合適,就要在導入jar包的位置聲明自己需要的版本。

用來規定項目引入的依賴的版本;
如果項目的dependency標簽中沒有指定版本,那么就使用dependencyManagement中規定的版本;
dependencyManagement只是規定依賴的版本,并沒有引入依賴;
如果dependencyManagement中定義的版本不合適,就需要自己在依賴中手動指定版本去覆蓋。

4.2.2、基于Aliyun服務器創建的SpringBoot應用

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>tech.code2048</groupId><artifactId>01_springboot_start_aliyun</artifactId><version>1.0.0</version><name>01_springboot_start_aliyun</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.4.1</spring-boot.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

分析:
沒有繼承父工程;
直接定義dependencyManagement。
在這里插入圖片描述

4.3、Java配置方式

如果我們需要在SpringBoot應用中整合一種新的開發場景,只需在pom.xml引入對應的starter即可

一個starter不僅包含依賴,還包含相應的配置,starter中包含的配置都是通過Java類實現的——Java配置方式

4.3.1、Spring版本發展

隨著Spring版本的迭代,配置方式也在發生變化Spring 1.x
所有的bean的配置只能通過xml完成
Spring 2.x
基于JDK1.5對注解的支持,Spring 2.x開始支持注解
企業開發中到底是用xml配置還是用注解?
對基礎配置、引用的第三方依賴中的配置使用xml完成:例如數據源配置
業務開發使用注解:例如controller、service
Spring 3.x
Spring開始提供基于Java的配置方式
Spring 4.x
xml、注解、Java

4.3.2、xml配置

<!--applicationContext.xml-->
<bean id="stu" class="tech.code2048.beans.Student"></bean>
<bean id="date" class="java.util.Date"></bean>

4.3.3、注解配置

@Component
public class Student{}

4.3.4、Java配置方式
創建配置類

@Configuration
public class SpringConfig{@Beanpublic Date getDate(){return new Date();}
}

4.4、SpringBoot自動配置

在這里插入圖片描述

4.5、全局配置文件

SpringBoot針對不同的開發場景提供默認的屬性配置,如果默認的配置不能滿足開發的需要,我們需要對屬性配置進行修改

SpringBoot應用提供了一個全局配置文件application.properties用于進行自定義配置

全局配置文件支持兩種語法配置:

properties鍵值對配置

yaml語法的配置

4.5.1、基于properties配置

配置數據源  (key必須按照SpringBoot的要求)
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=admin123配置映射文件路徑及實體類的包名
mybatis.mapper-locations=classpath:mappers/*Mapper.xml
mybatis.type-aliases-package=tech.code2048.springboot.demo.entity

4.5.2、基于yaml配置
縮進原則:縮進必須有兩個空格,下一級必須比上一級有兩個空格。
值的前面必須有一個空格

spring:datasource:url: jdbc:mysql://localhost:3306/db_2mybatis?characterEncoding=utf-8driver-class-name: com.mysql.jdbc.Driverusername: rootpassword: admin123mybatis:mapper-locations: classpath:mappers/*Mapper.xmltype-aliases-package: tech.code2048.springboot.demo.entity

4.5.3、常用的全局配置

server:port: 9999servlet:context-path: /start

4.6、自定義Banner
在SpringBoot應用啟動的時候是有一個默認啟動圖案的。

這個默認圖案支持自定義配置

在resources目錄創建一個banner.txt
在banner.txt文件中定義圖案http://patorjk.com/software/taag/

五、多環境配置

開發
測試
生產

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

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

相關文章

ansible 版本升級

1. 服務器上查看對應ansible 可安裝的版本 yum info ansible 對比官網,服務器對應ansible 版本比較地址,不利于了解新版本的屬性。 2. 升級比較新的ansible 版本,安裝epel-release wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm rpm -iv…

企業微信API接口發消息實戰:從0到1的技術突破之旅

摘要&#xff1a;本文詳細介紹了通過企業微信官方API接口實現消息發送功能的完整實戰流程。首先闡述了企業微信API在數字化辦公中的重要性&#xff0c;重點講解了消息發送接口的應用場景。實戰部分分為前期準備、開發環境搭建和具體實現三個環節&#xff0c;包括創建企業微信應…

Linux的小程序——進度條

為了寫出這個小程序我們先來了解幾個知識點(一)回車和換行先以寫作文為例子了解一下&#xff0c;當在一行中寫了一半&#xff0c;由此處位置往下一行的操作叫做換行&#xff0c;回到該行的開頭位置為回車。而在c語言中\n幫我們完成了換行和回車兩個動作&#xff0c;那單純回車是…

在macOS上使用VS Code和Clang配置C++開發環境

本文基于VS Code官方文檔&#xff0c;詳細介紹如何在macOS系統下配置Clang/LLVM編譯器與VS Code的C開發環境。通過本文&#xff0c;你將學會如何搭建開發環境、創建并調試C程序&#xff0c;適合C初學者和需要在macOS上進行C開發的開發者。 前提條件 在開始配置前&#xff0c;…

Ganttable 基于工時的進度分析

時間進度分析是 Ganttable 提供的高級進度管理功能&#xff0c;它基于實際工作時長&#xff0c;結合計劃預估工時&#xff0c;可精準計算項目及任務的完成度。開啟進度分析開啟進度分析功能的操作如下&#xff1a;在時間管理頁面&#xff0c;點擊右上角的 “設置” 按鈕&#x…

duiLib 自定義資源目錄

前面的demo&#xff0c;把布局文件放在默認目錄了&#xff0c;想著應該也可以自定義資源路徑。先debug看下默認目錄是什么路徑。設置調試選項&#xff0c;調試信息格式改為程序數據庫&#xff08;/Zi&#xff09;再調試項目&#xff0c;選中監視1&#xff1a;在監護窗口中查看變…

YOLO-01目標檢測基礎

1、概念目標檢測&#xff08;Object Detection&#xff09;是計算機視覺中的一個重要領域&#xff0c;它涉及到識別圖片或視頻某一幀中的物體是什么類別&#xff0c;并確定它們的位置。通常用于多個物體的識別&#xff0c;可以同時處理圖像中的多個實例&#xff0c;并為每個實例…

Linux->動靜態庫

目錄 引入&#xff1a; 一&#xff1a;動靜態庫的介紹 1&#xff1a;庫的本質 2&#xff1a;庫的類別及優缺點 3&#xff1a;動態鏈接 4&#xff1a;靜態鏈接 二&#xff1a;頭文件和庫的查找 三&#xff1a;靜態庫的制作和使用 1&#xff1a;制作 2&#xff1a;指令打…

【LY88】雙系統指南及避坑

一. Windows重裝&#xff08;前提是Windows可正常使用&#xff0c;優點是無需U盤&#xff09; 1. PE工具和系統鏡像 機械師只只提供的資源鏈接 完成微PE工具的安裝并下載了系統鏡像之后&#xff0c;&#xff08;如果要裝ubuntu的話&#xff09;需確認磁盤分區格式和引導項。前…

Ubuntu22.04.1搭建php運行環境

步驟 1: 更新你的系統 首先&#xff0c;確保你的系統是最新的。打開終端并運行以下命令&#xff1a; sudo apt update sudo apt upgrade步驟 2: 安裝Apache Web服務器 使用Apache作為你的Web服務器。運行以下命令&#xff1a; sudo apt install apache2安裝完成后&#xff0c;你…

防止飛書重復回調通知分布式鎖

## 場景銷售訂單下&#xff0c;明細25明細款&#xff0c;發起飛書審批&#xff0c;飛書設置自動審核通過&#xff0c;導致會收到兩次審核通過通知加了分布式鎖 &#xff0c;仍導致執行業務執行兩遍了String lockKey "feihsu-approvalNotify:" instanceCode; RLock …

數據結構:下三角矩陣(Lower Triangular Matrix)

目錄 什么是下三角矩陣&#xff1f; 我們要存哪些元素&#xff1f;一共幾個&#xff1f; 推導索引映射公式 核心問題&#xff1a;給定 (i,j)&#xff0c;如何計算 k&#xff1f; 什么是下三角矩陣&#xff1f; 一個 n n 的矩陣&#xff0c;如果它在主對角線以上的所有元…

力扣209:長度最小的子數組

力扣209:長度最小的子數組題目思路代碼題目 給定一個含有 n 個正整數的數組和一個正整數 target 。 找出該數組中滿足其總和大于等于 target 的長度最小的 子數組 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其長度。如果不存在符合條件的子數組&#xff0c;返回…

采購管理系統哪家性價比高?

在企業數字化轉型進程中&#xff0c;采購管理系統已成為降本增效的核心工具。但面對市場上五花八門的產品&#xff0c;“性價比” 成為企業選型時的關鍵考量 —— 既要功能貼合業務需求&#xff0c;又要成本可控&#xff0c;還需兼顧實施效率與長期擴展性。以下從性價比維度解析…

輕松打造Unity小游戲AR體驗

目錄 AR會話初始化 平面追蹤與相機定位 用戶交互處理 實時渲染 Unity 小游戲宿主現已支持 AR 功能&#xff0c;本文介紹如何從零開始創建一個可以在Unity小游戲宿主上運行的AR小游戲&#xff0c;歡迎大家試用&#xff01; 想為你的小游戲注入虛實交融的魔力嗎&#xff1f;…

IFCVF驅動+vhost-vfio提高虛擬機網絡性能

??IFCVF (Intel FPGA Virtual Function)?? 是 Intel 為其基于 FPGA 的智能網卡開發的 ??SR-IOV 虛擬功能驅動??,屬于 ??PF4 (Physical Function 4)?? 架構的一部分。它是專為高性能網絡虛擬化場景設計的硬件加速解決方案。 云計算智能網卡(soc)或DPU場景下,IFC…

Hook捕獲并攔截文件創建行為

需要用到minhook 先編譯DLL #include <Windows.h> #include <string> #include <TlHelp32.h> #include <Shlwapi.h>#include "MinHook.h" // 自動選擇正確的MinHook庫 #pragma comment(lib, "Shlwapi.lib") #if defined(_M_X64) …

圖像平滑處理

圖像平滑處理四種常用方式1. 均值濾波 (cv2.blur())2. 高斯濾波 (cv2.GaussianBlur())3. 中值濾波 (cv2.medianBlur())4、雙邊濾波 (cv2.bilateralFilter())總結存圖時遇到一個中文版亂碼問題四種常用方式 平滑處理&#xff08;也稱為模糊處理&#xff09;&#xff0c;用于減少…

fortigate的waf功能

在系統管理----可見功能----web應用防火墻打開waf功能Web 應用程序防火墻 &#xff08;WAF&#xff09; 配置文件可以檢測和阻止已知的 Web 應用程序攻擊。您可以將 WAF 配置文件配置為使用簽名和約束來檢查 Web 流量。您還可以強制實施 HTTP 方法策略&#xff0c;該策略控制與…

AI Compass前沿速覽:可靈創意工坊、字節Coze StudioCoze Loop、通義萬相2.2 、智譜GLM-4.5、騰訊混元3D世界模型開源

AI Compass前沿速覽&#xff1a;可靈創意工坊、字節Coze Studio&Coze Loop、通義萬相2.2 、智譜GLM-4.5、騰訊混元3D世界模型開源 AI-Compass 致力于構建最全面、最實用、最前沿的AI技術學習和實踐生態&#xff0c;通過六大核心模塊的系統化組織&#xff0c;為不同層次的學…