Spring Boot從入門到精通(一)搭建第一個Spring Boot程式

来源:https://www.cnblogs.com/MrYoodb/archive/2020/02/18/12324934.html
-Advertisement-
Play Games

Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Boot致力於在蓬勃發展的快速應用開發領域(rapid application devel ...


Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成為領導者。

Spring Boot是基於Spring框架基礎上推出的一個全新的框架, 旨在讓開發者可以輕鬆地創建一個可獨立運行的,生產級別的應用程式。基於Spring Boot內部的自動化配置功能,開發者可以在“零”配置, 或者只需要添加很少的配置,就可以進行日常的功能開發。

Spring Boot的特點

1)創建獨立的Spring應用程式;

2)直接嵌入Tomcat,Jetty或Undertow,無需部署WAR文件;

3)提供推薦的基礎POM文件(starter)來簡化Apache Maven配置;

4)儘可能的根據項目依賴來自動配置Spring框架;

5)提供可以直接在生產環境中使用的功能,如性能指標,應用信息和應用健康檢查;

6)開箱即用,沒有代碼生成,不需要配置過多的xml。同時也可以修改預設值來滿足特定的需求。

7)其他大量的項目都是基於Spring Boot之上的,如Spring Cloud。

Spring Boot優缺點

優點

1)Spring Boot可以支持開發人員快速的開發出restful風格的微服務架構;

2)Spring Boot自動化確實方便,做微服務再合適不過了,單一jar包部署和管理都非常方便。只要系統架構設計合理,大型項目也能用,加上nginx負載均衡,輕鬆實現橫向擴展;

3)Spring Boot要解決的問題, 精簡配置是一方面, 另外一方面是如何方便的讓spring生態圈和其他工具鏈整合(比如Redis,email,elasticsearch)。

優點

1)版本迭代速度更新太快,一些模塊的改動很大;

2)由於無需配置或少量配置,報錯時定位比較有難度;

3)網上現有資源的解決方案比較少見。

Spring Boot的核心功能

1)獨立運行spring項目。Spring Boot以jar包的形式可以獨立運行,使用java -jar xx.jar 就可以成功運行項目。

2)內嵌servlet容器。內嵌容器,使得我們可以執行運行項目的主程式main函數,使得項目可以快速運行。

3)提供starter簡化Maven配置。Spring Boot提供了一系列的start pol用來簡化maven依賴。如:常用的spring-boot-starter-web、spring-boot-starter-tomcat、spring-boot-starter-actuator等。

Spring Boot推薦基礎POM文件

4)自動配置spring。Spring Boot會根據我們項目中類路徑的jar包,為jar包的類進行自動裝配bean。

5)應用監控。Spring Boot提供了基於HTTP、ssh、telnet對運行時的項目進行監控。

搭建第一個Spring Boot程式

環境準備

一個比較不錯的文本編輯器(例如Vim、Emacs、Sublime Text)或者IDE(Eclipse、IntelliJ IDEA)

Java環境(JDK 1.8或以上版本)

Maven 3.0+IntelliJ IDEA(Eclipse和IntelliJ IDEA內置,如果使用IDE並且不使用命令行工具可以不安裝)。

 

maven構建項目

1)官網地址:http://start.spring.io/

2)選擇構建工具

Project(項目):Maven Project;

Language(語言):Java;

Spring Boot(版本):2.3.0M2;

Project Metadata(項目元數據):Group [com.yoodb]和Artifact[demo];

Dependencies(依賴關係):

[Name:springboot-study-demo01;

Description:Demo project for Spring Boot;

Package name:com.yoodb.study.demo01;

Package name:War;Java(JDK):8],可參考如圖所示:

 

Spring Boot2.3.0.M2這一個裡程碑的主要包括:改進Docker鏡像支持;升級到 MongoDB 4(仍處於 beta 版);支持配置文件的通配符位置;眾多依賴項升級。

3)點擊“Generate-Crtl+”按鈕下載項目壓縮包;

4)解壓後,使用IntelliJ IDEA,Project Settings -> + ,導入Maven項目後點擊“OK”,如圖所示:

 

 

5)選中右側Maven菜單,執行install命令,等待執行完成,如圖所示:

 

 

目錄結構

Maven項目導入成功後,目錄結構如下圖所示:

 

 

Spring Boot的基礎結構共三個文件:

src/main/java 程式開發以及主程式入口

src/main/resources 配置文件

src/test/java 測試程式

Spring boot官方建議的目錄結果如下:

root package結構:com.example.yourproject

com
+- example
+- yourproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- controller
| +- CustomerController.java
|

1)Application.java 建議放到根目錄下麵,主要用於做一些框架配置;

2)domain目錄主要用於實體(Entity)與數據訪問層(Repository);

3)service 層主要是業務類代碼;

4)controller 負責頁面訪問控制。

採用預設配置可以省去很多配置,當然也可以根據自己的喜歡來進行更改,到此一個Spring boot框架的Maven項目搭建完成。

 

Maven項目啟動

編寫controller類文件,代碼如下所示:

package com.yoodb.study.demo01;


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String index() {
return "關註微信公眾號“Java精選”,Spring Boot系列文章持續更新中,帶你從入門到精通,玩轉Spring Boot框架。";
}
}

註:@RestController的含義是controller裡面的方法都以json格式輸出。

啟動主程式,執行如圖所示:

打開瀏覽器訪問http://localhost:8080/hello,就可以看到效果了,是不是感覺很簡單,那麼大家趕緊試一試吧!歡迎關註微信公眾號“Java精選”,持續更新Spring Boot系列文章,供大家參考和學習。

 

Spring Boot如何做單元測試?

打開的src/test/下的測試入口,編寫簡單的http請求來測試;使用mockmvc進行,利用MockMvcResultHandlers.print()列印出執行結果。

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MockServletContext.class)
@WebAppConfiguration
public class HelloWorldControlerTests {
private MockMvc mvc;
@Before
public void setUp() throws Exception {
mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
}
@Test
public void getHello() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print())
.andReturn();
}
}

 

另外,官方提供了一種比較新的註解測試方法,具體代碼參考如下:

@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloWorldControlerTests {
private MockMvc mvc;
@Before
public void setUp() throws Exception {
mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
}
@Test
public void getHello() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print())
.andReturn();
}
}

  

Spring Boot開發環境的調試

熱啟動(熱部署)在正常開發項目中已經很常見了,雖然平時開發web項目過程中,改動項目重啟總是報錯;但Spring Boot對調試支持很好,修改之後可以實時生效,需要添加以下的配置:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>

註:該模塊在完整的打包環境下運行的時候會被禁用。如果你使用java -jar啟動應用或者用一個特定的classloader啟動,它會認為這是一個“生產環境”。

轉載自:https://blog.yoodb.com/yoodb/article/detail/1561


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Win+S -> msconfig ...
  • 當linux 代理軟體設置好後,我們需要設置命令行代理的連接方式,這樣在命令行中的軟體才能使用: 設置http/https代理: export https_proxy="127.0.0.1:12333" export http_proxy="127.0.0.1:12333" 如果有密碼: expor ...
  • 徹底理解Windows認證 一、Windows本地認證 1. 我的密碼在哪裡? 路徑:C:\Windows\System32\config\SAM 當我們登錄系統的時候,系統會自動的讀取SAM文件中的“密碼”與我們輸入的“密碼”進行對比,如果相同,證明認證成功。 2. NTML(NT LAN Man ...
  • 這裡分享嵌入式領域有用有趣的項目/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時發佈一期 ...
  • Microchip的SRAM和NVSRAM系列(SPI串列SRAM和NVSRAM設備)提供了一種輕鬆添加外部RAM的方式,且具有以下特性功能 特性低功耗CMOS技術:4μA最大待機電流 標準4引腳SPI介面:晶元選擇、數據輸入、數據輸出和時鐘 無限寫入存儲器、零寫入時間 提供備用電池(512Kb、1 ...
  • [root@localhost ~]# vim user.sh 1 #!/bin/bash 2 for i in `cut -d ":" -f1 /etc/passwd`; 3 do 4 echo -e "Hello User:" "\033[31m$i\033[0m" "shell is" "\0 ...
  • parted用於操縱磁碟分區的程式,通常用於規則大小超過2T的分區,也可用於小分區的規劃;它支持多種分區表格式,包括MS-DOS(MBR)和GPT;這對於為新操作系統創建空間,重新組織磁碟使用以及將數據複製到新硬碟非常有用;parted命令的操作都是實時生效的,每操作一步都應小心 parted具有兩 ...
  • 1、Docker入門簡介 Docker技術類似碼頭上看到的集裝箱,最早集裝箱沒有出現的時候,碼頭上有許多搬運的工人在搬運貨物,有了集裝箱以後,搬運貨物變得簡單,通過集裝箱的搬運模式更加單一、高效,將貨物打包在集裝箱裡面,可以複製貨物之間相互影響。 如果要將貨物搬運到另一個碼頭就需要裝運,通過集裝箱, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...