java-spring boot光速入門教程(超詳細!!)

目錄

一、引言

1.1 初始化配置

1.2 整合第三方框架

1.3 后期維護

1.4 部署工程

1.5 敏捷式開發

二、SpringBoot介紹

spring boot

2.1 搭建一個spring boot工程

2.2 使用idea創建項目

2.3 在線創建姿勢

2.4 項目的目錄結構

2.5 項目的運行方式

2.6 yml文件格式

2.7 多環境配置

2.8 配置類的使用

2.9 靜態資源處理


一、引言


1.1 初始化配置

為了使用SSM框架去開發,準備SSM框架的模板配置。

1.2 整合第三方框架

為了Spring整合第三方框架,單獨的去編寫xml文件。

1.3 后期維護

后期SSM項目后期xml文件特別多,維護xml文件的成本是很高的

1.4 部署工程

SSM工程部署也是很麻煩,依賴第三方的容器

1.5 敏捷式開發

基于Java的SSM開發方式是很笨重,而現在的python,php,NodeJS的敏捷式開發已經蓋過Java一頭

二、SpringBoot介紹


SpringBoot是由Pivotal團隊研發的,SpringBoot并不是一門新技術,只是將之前常用的Spring,SpringMVC,data-jpa等常用的框架封裝到了一起,幫助你隱藏這些框架的整合細節,實現敏捷開發。

SpringBoot就是一個工具集。

SpringBoot特點:

  • SpringBoot項目不需要模板化的配置。

  • SpringBoot中整合第三方框架時,只需要導入相應的starter依賴包,就自動整合了。

  • SpringBoot默認只有一個.properties的配置文件,不推薦使用xml,后期會采用.java的文件去編寫配置信息。

  • SpringBoot工程在部署時,采用的是jar包的方式,內部自動依賴Tomcat容器,提供了多環境的配置。

  • 后期要學習的微服務框架SpringCloud需要建立在SpringBoot的基礎上。

?

三、spring boot

使用的版本是: 2.6.8, 暫不要使用spring boot3.x版本.

官方文檔: Spring Boot

spring boot的整個文檔:

  • Spring Boot Reference Documentation

3.1 搭建一個spring boot工程

必須會這種.

  1. 新建一個java se的maven工程.

  2. spring boot的依賴.

<!-- 注意,這個標簽是parent, 表示當前的父工程 -->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.8</version>
</parent>
  1. 引入一個組件, spring boot starter web.

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
  1. 創建一個啟動類.

/*** @author 聽憶*/
@SpringBootApplication // 表示我是一個啟動類.
public class MyApplication {// 通過main啟動當前的spring boot工程.public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}
  1. 編寫一個控制器的方法

原則: 之前怎么寫這里還是怎么寫,一點變化都沒有.

/*** @author 聽憶*/
@RestController
public class UserController {@GetMapping("/hello")public String hello(){return "你好啊,spring boot";}
}
?

3.2 使用idea創建項目

3.3 在線創建姿勢

通過start.spring.io或者start.aliyun.com,可以在網頁端進行項目的創建,然后下載創建的壓縮包解壓之后,導入到idea當中即可;

注意事項:

  • 如果start.spring.io無法訪問,「在idea當中」, 則可以嘗試去修改idea的配置為: start.aliyun.com, 然后按照后續流程進行創建項目.

  • 目前版本號是: 2.6.8

3.4 項目的目錄結構

咱們手動創建的項目, 這個結構就是一個標準的javaSE工程,沒有配置文件.如果用這種方式,我們會手動去創建這些個目錄. –> 之后會使用這種方式.

采用idea內置的方式創建,給我們生成了:

  • resouce

    • static

    • templates

    • applicaton.properties –> 文件名稱不能修改.

3.5 項目的運行方式

開發階段,一般情況我們都使用idea直接運行.

測試/上線 –> 打包

  • 使用maven,必須得安裝上打包插件.

 
<!-- 打包插件, 將當前的工程,打包成xxx.jar包。必須得有此插件。 -->
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins>
</build>
注意事項:

  • 如果你這個報紅, 但是咱們如果不打包的話,則直接將它刪除掉.打包必須得下載成功.

    • 如果實在下載不了,拷貝一個,放到自己maven本地倉庫.

==特別重要的注解:==

@SpringBootApplication就是一個組合注解:
?
- ?@SpringBootConfiguration就是@Configuration注解,代表啟動類就是一個配置類。
- ?@EnableAutoConfiguration幫你實現自動裝配的,SpringBoot工程啟動時,運行一個SpringFactoriesLoader的類,加載META-INF/spring.factories配置類(已經開啟的),通過SpringFactoriesLoader中的load方法,以for循環的方式,一個一個加載。- 好處:無需編寫大量的整合配置信息,只需要按照SpringBoot提供好了約定去整合即可。- 壞處:如果說你導入了一個starter依賴,那么你就需要填寫他必要的配置信息。- 手動關閉自動裝配指定內容:@SpringBootApplication(exclude = QuartzAutoConfiguration.class)
- ?@ComponentScan就相當于<context:component-scan basePackage=“包名” />,幫助掃描注解的。

復合注解。

  • 實現包掃描, 自動裝配。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited // 四個元注解
------------------------------
@SpringBootConfiguration // sprnig自動裝配
@EnableAutoConfiguration // 啟動spring 自動裝配
// 包掃描配置
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {}@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
-------------------------------------------
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {}

自動裝配.
xxxAutoConfiguration, --> 自動裝配的類.
xxxProperties --> 在配置文件當中,要覆蓋的屬性.

以spring mvc為例,查看一下自動裝配和我們自定義配置如何做的.

每一個組件都會有: xxxAutoConfiguration, 必須要有的.相當于一個規范.

@Configuration(proxyBeanMethods = false)
@Import(EnableWebMvcConfiguration.class)
// 開啟配置
@EnableConfigurationProperties({ WebMvcProperties.class, WebProperties.class })
@Order(0)
public static class WebMvcAutoConfigurationAdapter implements WebMvcConfigurer, ServletContextAware {

通過觀察發現了: 有兩個xxxProperties的文件.這個文件就是: 我們可以在配置文件當中: application.properties文件進行屬性覆蓋的文件.也就是說, 在xxxProperties文件當中,全部都是默認的配置項.如果我們想更改這些個默認的配置,則只需要, 直接通過: 前綴.屬性名稱=值 進行覆蓋即可;

@ConfigurationProperties(prefix = "spring.mvc") // 定義一個, 在application.properties文件當中,進行配置的前綴.
// 通過前綴.屬性名稱  = 值,覆蓋當前這個配置類的相關屬性.
public class WebMvcProperties {
}

spring.mvc.view.prefix=/pages/xx # 在配置文件當中,覆蓋view.prefix
spring.mvc.view.suffix=.jsp # 在配置文件當中, 覆蓋view.suffix?

==xxxAutoConfiguration.java==

==xxxProperties.java==

對于這些類的加載.它是有條件的,當符合裝配條件,則spring boot才會去加載.并且進行自動裝配.如果不符合條件,則不加載.使用起來更加靈活.

類似于:

ConditionalOnMissingBean
@ConditionalOnSingleCandidate(RedisConnectionFactory.class)
@ConditionalOnClass(RedisOperations.class)

3.6 yml文件格式

一般情況下,我們都寫: application.yml這種姿勢的,但是實際也可以寫: application.yaml格式.更推薦: yml文件格式的.

也可以配置一些數據或者集合

# 表示配置一個數組或者集合.注意:
# -空格 值
# tingyi.student
tingyi:student:- 張三- 李四- 王五

集合或者數組的表示方式.

如果同時使用application.properties文件,和application.yml文件,則生效的是 :applicaton.properties文件.

3.7 多環境配置

實際工作當中有三個環境:

  • 開發環境,就是我們程序員自己的開發環境.

  • 測試環境, 測試的同學們,使用的一種環境,可能跟這個開發環境還一樣.

  • 生產環境, 對外給用戶用的環境.「線上環境」

生產需要, 從開發環境的數據庫.要切換到測試環境的數據,怎么來做方便一些.你不能直接修改配置配置. 此時就需要我們在開發階段就將這個多環境配置好.這樣我們打包之后,就可以在運行的時候,方便的切換各種各樣的環境;

測試, 修改端口號:

  • 開發環境: 9000

    • application-dev.yml

  • 測試環境: 9001

    • application-test.yml

  • 生產環境: 9002

    • application-prod.yml


  • 加載的配置文件

    • application.yml, 在這個文件當中咱們可以指定一個環境.

多環境配置的寫法總結:

  • 配置環境這樣寫:

    • application-{環境名稱}.yml

  • 主配置文件當中對環境進行激活

    spring:profiles:active: 環境名稱
在部署工程時,通過 java -jar jar文件 --spring.profiles.active=環境

3.8 配置類的使用

使用:

  • 必須將類標記一注解: @Component, 將這個類對象放到容器當中.

  • 添加配置類注解: @ConfigurationProperties(prfix=’要寫在配置文件當中的前綴’)

  • 必須得有getter/setter方法,方可配置.

用途:

  • 在配置文件當中對我們的配置類的屬性進行賦值了.也就是配置好了.

  • 那么在其它類當中可以隨意使用, 使用的時候,通過注解的姿勢來獲取配置在配置文件當中的配置類的屬性的值;

  • @Value(‘前綴.配置類的屬性名稱‘)

如果不寫配置類的,可以直接在配置文件當中進行字段相關配置也是可以的.

# 沒有配置類,我們直接可以這樣配置.
tingyi:name: 聽憶sex: 男address: 呀呼

tingyi并沒有類與之相對應,只是我們手動搞了一個前綴,使用起來感覺跟咱們有配置的方式一毛一樣.結果也是一樣的.但是這樣寫的話,并不好.不方便維護,且前綴可以隨意的更改的.因為有配置類的方式前綴已經約定好了.不能隨意的更改.

用法.一毛一樣,沒有啥區別;

3.9 靜態資源處理

public static class Resources {
?private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/","classpath:/resources/", "classpath:/static/", "classpath:/public/" };
?/*** Locations of static resources. Defaults to classpath:[/META-INF/resources/,* /resources/, /static/, /public/].*/private String[] staticLocations = CLASSPATH_RESOURCE_LOCATIONS;

以上四個目錄都可以配置靜態資源.咱們可以放到任意一個靜態資源目錄.

訪問的時候,不要訪問靜態資源的目錄名稱.

如果要修改的,不建議修改.

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

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

相關文章

CP AUTOSAR標準之XCP(AUTOSAR_CP_SWS_XCP)(更新中……)

1 簡介和功能概述 該規范規定了AUTOSAR基礎軟件模塊XCP的功能、API和配置。XCP是主設備(工具)和從設備(設備)之間的協議描述(ASAM標準),提供以下基本功能: 同步數據采集(測量)同步數據刺激(用于快速原型設計)在線內存校準(讀/寫訪問)校準數據頁面初始化和切換用于ECU開發目的…

分享外貿工作中常用英文標準表達和英文語句

常用英文表達 報拉格斯最低到岸價 quote the lowest price CIF Lagos經營紡織品多年 be in the line of textiles for many years貨物受歡迎 the goods are very popular with customers / have met with a warm reception /be well received/accepted/ enjoy a wide populari…

Java線程死鎖及解決方法

多線程環境下&#xff0c;死鎖即兩個或兩個以上的線程去爭奪同一個共享資源&#xff0c;而導致互相等待的情況。 要產生死鎖&#xff0c;必須滿足如下四個條件&#xff1a; 互斥條件&#xff0c;共享資源x和y只能被一個線程占有請求和保持條件&#xff0c;T1持有x&#xff0c…

解讀BASE理論:高可用性與性能的完美平衡

Base概念 BASE 理論是一種處理大規模分布式系統中的數據一致性問題的思路。相比于傳統的嚴格一致性&#xff0c;它更靈活&#xff0c;適用于那些需要高可用性和性能的系統。BASE 理論由三個部分組成&#xff1a; 基本可用&#xff08;Basically Available&#xff09; 基本可用…

【c++刷題筆記-動態規劃】day32: 509. 斐波那契數 、 70. 爬樓梯 、 746. 使用最小花費爬樓梯

509. 斐波那契數 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int fib(int n) {if(n0){return 0;}vector<int>dp(n1);dp[0]0;dp[1]1;for(int i2;i<n;i){dp[i]dp[i-1]dp[i-2];}return dp[n];} }; 70. 爬樓梯 - 力扣&#xff08;LeetCode&#x…

pytorch 模型保存到本地之后,如何繼續訓練

在 PyTorch 中&#xff0c;你可以通過以下步驟保存和加載模型&#xff0c;然后繼續訓練&#xff1a; 保存模型 通常有兩種方式來保存模型&#xff1a; 保存整個模型&#xff08;包括網絡結構、權重等&#xff09;&#xff1a; torch.save(model, model.pth) 只保存模型的state…

利用亞馬遜云科技云原生Serverless代碼托管服務開發OpenAI ChatGPT-4o應用

今天小李哥繼續介紹國際上主流云計算平臺亞馬遜云科技AWS上的熱門生成式AI應用開發架構。上次小李哥分享?了利用谷歌云serverless代碼托管服務Cloud Functions構建Gemini Pro API?&#xff0c;這次我將介紹如何利用亞馬遜的云原生服務Lambda調用OpenAI的最新模型ChatGPT 4o。…

CSAL: the Next-Gen Local Disks for the Cloud——論文泛讀

EuroSys 2024 Paper 論文閱讀筆記整理 問題 云本地磁盤以其實惠的價格和高性能而極具吸引力。在云本地磁盤中&#xff0c;物理存儲設備直接連接到計算服務器&#xff0c;并作為塊設備虛擬化到虛擬機&#xff08;VM&#xff09;。在這種設置下&#xff0c;計算節點受其有限的計…

純前端如何實現Gif暫停、倍速播放

前言 GIF 我相信大家都不會陌生&#xff0c;由于它被廣泛的支持&#xff0c;所以我們一般用它來做一些簡單的動畫效果。一般就是設計師弄好了之后&#xff0c;把文件發給我們。然后我們就直接這樣使用&#xff1a; <img src"xxx.gif"/>這樣就能播放一個 GIF …

MPC學習資料匯總

模型預測控制MPC學習資料匯總 需要的私信我~ 需要的私信我~ 需要的私信我~ 【01】課件內容 包含本號所有MPC課程的課件&#xff0c;以及相關MATLAB文檔。 【02】課件源代碼 本號所有MPC課程的源代碼。 【03】MPC仿真案例 三個MPC大型仿真案例&#xff1a; 1&#xff09;…

Python面試題:在 Python 中如何進行多線程編程?

在 Python 中進行多線程編程通常使用 threading 模塊。下面是一個簡單的示例&#xff0c;展示了如何創建和啟動多個線程。 示例代碼 import threading import time# 定義一個簡單的函數&#xff0c;它將在線程中運行 def print_numbers():for i in range(10):print(f"Nu…

鏈接器的工作原理,靜態鏈接與動態鏈接的區別,如何創建和使用動態鏈接庫

鏈接器在程序開發中的作用至關重要&#xff0c;它負責將多個目標文件和庫文件整合成一個可以執行的文件。在深入了解鏈接器的工作原理、靜態鏈接與動態鏈接的區別&#xff0c;以及如何創建和使用動態鏈接庫之前&#xff0c;我們先來概述一下鏈接器的基本功能。 鏈接器的工作原…

20240704每日后端------聊聊 mybatis的 where 1=1

目標 最近&#xff0c;在項目中使用MyBatis進行SQL腳本編寫時&#xff0c;我遇到了以“WHERE 11”開頭的WHERE子句的做法&#xff0c;以簡化多個條件的串聯。這里有一個例子來討論這種技術以及“WHERE 11”是否對性能有任何影響。 <select id"" parameterType&q…

【數據結構】09.樹與二叉樹

一、樹的概念與結構 1.1 樹的概念 樹是一種非線性的數據結構&#xff0c;它是由n&#xff08;n>0&#xff09;個有限結點組成一個具有層次關系的集合。把它叫做樹是因為它看起來像一棵倒掛的樹&#xff0c;也就是說它是根朝上&#xff0c;而葉朝下的。 根結點&#xff1a;根…

04采訪:數字人直播

?AI技術的迭代對數字人直播一定是有正向推動作用的。直播可持續性差,投入產出極不協調。不適合前期大量投入。直播現在這個東西有一個問題,因為直播開始帶貨了,就已經不是一個單純的娛樂性質的視頻內容,而是對帶有一種商業目的內容。 直播帶貨的痛點:對主播而言是觀眾;…

俯臥撐計數器(Python)

通過 MediaPipe 檢測人體姿態&#xff0c;計算俯臥撐角度和計數&#xff0c;并在圖像上進行可視化展示 需要有cv2庫和mediapipe庫 mediapipe庫&#xff1a; MediaPipe是Google開源的機器學習框架&#xff0c;用于構建實時音頻、視頻和多媒體處理應用程序。它提供了一組預訓練的…

一文清晰了解HTML

有這樣一個txt記事本文件和一張圖片&#xff1a; txt文本內容是這樣的&#xff1a; <html><head><title>HTML學習</title></head><body><h1>hello HTML</h1><img src"高清修復.png"/></body> </html…

LabVIEW的JKI State Machine

JKI State Machine是一種廣泛使用的LabVIEW架構&#xff0c;由JKI公司開發。這種狀態機架構在LabVIEW中提供了靈活、可擴展和高效的編程模式&#xff0c;適用于各種復雜的應用場景。JKI State Machine通過狀態的定義和切換&#xff0c;實現了程序邏輯的清晰組織和管理&#xff…

VSCode工程中task.json的作用

在 Visual Studio Code&#xff08;VSCode&#xff09;中&#xff0c;tasks.json 文件是用來定義和配置任務&#xff08;Tasks&#xff09;的。任務指的是在開發過程中需要自動化執行的一系列操作&#xff0c;例如編譯代碼、運行測試、打包項目等。通過配置 tasks.json&#xf…

In Search of Lost Online Test-time Adaptation: A Survey--論文筆記

論文筆記 資料 1.代碼地址 https://github.com/jo-wang/otta_vit_survey 2.論文地址 https://arxiv.org/abs/2310.20199 3.數據集地址 1論文摘要的翻譯 本文介紹了在線測試時間適應(online test-time adaptation,OTTA)的全面調查&#xff0c;OTTA是一種專注于使機器學習…