背景
在我看來編程是一棵樹,編程語言就是這棵樹由主干生長出來的樹枝,而各種語言的框架則就像是樹枝上的樹葉,是當前這門語言的結晶,在實際的生產環境中扮演著重要角色,學習這些框架能夠幫我們真正的具備實際開發能力,進而找到一份好的工作,有興趣可以看看聊聊自學編程這篇文章,主要是我對于編程的一些看法,也許會對你有所啟發。
何為Spring Boot
在說Spring Boot之前先要了解Spring,那么Spring是什么呢?Spring 框架是一個分層的、面向切面的Java應用程序的一站式輕量級解決方案,它是Spring技術棧的核心和基礎,是為了解決企業級應用開發的復雜性而創建的。我們還是遵循之前所說的學習是一新事物時,先要略其大觀,不求甚解。在這里先不管什么分層,面向切面,現在只需要知道Spring是一個Java EE的開發框架,幫助開發通俗意義上的Java后端。
那么Spring Boot又是什么呢?Spring Boot是Pivotal團隊在Spring的基礎上提供的一套全新的開源框架,其目的是為了簡化Spring應用的搭建和開發過程。
Spring Boot去除了大量的 XML配置文件,簡化了復雜的依賴管理。Spring Boot具有Spring一切優秀特性,Spring能做的事,Spring Boot都可以做,而且使用更加簡單,功能更加豐富,性能更加穩定而健壯。
隨著近些年來微服務技術的流行,Spring Boot也成了時下炙手可熱的技術。Spring Boot集成了大量常用的第三方庫配置,Spring Boot應用中這些第三方庫幾乎可以是零配置的開箱即用(out-of-the-box)大部分的 Spring Boot 應用都只需要非常少量的配置代碼(基于Java的配置),開發者能夠更加專注于業務邏輯。
由此可以看出Spring Boot是由Spring衍生出的,傳統的Spring框架很多復雜的配置,而Spring Boot所做的就是使用合理的默認值簡化Spring一系列的配置,提高開發效率,而使用合理的默認值就是Spring Boot中核心的設計思想“約定優于配置”。
上面我們已經介紹了什么是Spring,什么是Spring Boot,還是老規矩why比what更重要,為什么我們需要Spring Boot,它的優勢是什么呢?
- 快速構建:使用Spring Initializr可以快速創建項目,同時提供了豐富的解決方案,便于快速集成各種解決方案,提升開發效率。
- 簡化依賴:提供了豐富的Starters,簡化Maven配置,避免版本兼容問題。
- 一鍵部署:內嵌Servlet容器,如Tomcat、Jetty,能夠直接打包成可執行JAR文件獨立運行,支持Jenkins、Docker,輕松實現自動化運維。
- 應用監控:自帶Actuator監控組件,輕松監控服務的各項狀態。使用Spring Boot Admin可以輕松部署功能完善的應用監控體系。
總的來說,Spring Boot讓構建、編碼、配置、部署、監控都變得非常簡單。
開啟Spring Boot之旅
項目創建
如下圖所示,在IDEA中可以通過Spring Initializr快速創建項目,Group是公司,Artifact是項目名稱,點擊下一步即可創建一個Spring Boot項目。
項目結構
接下來我們看一下新建項目的項目結構,如下圖所示
從上面可以看到,我們新建的test項目只有3個主要目錄* src/main/java:程序開發以及主程序目錄
- src/main/resources:配置文件和資源文件目錄
- src/test/java:測試程序目錄 然而一個完整的項目包括前臺頁面、model實體、數據庫訪問、公共基礎類等非常多的文件和目錄,Spring Boot建議目錄如下圖
如圖中com.qstack.test為根目錄應包括:* TestApplication.java:建議放到根目錄下,是項目的啟動類,Spring Boot項目只能有一個main()方法入口。
- comm:建議放置公共的類,如全局的配置文件、工具類等。
- model:主要用于實體(Entity)。
- repository:主要用于數據庫訪問層的代碼
- service:主要是業務類代碼
- web:負責前臺頁面訪問Controller路由 resources目錄下包括:
- static:存放web訪問的靜態資源如JS、CSS、圖片等。
- templates:存放頁面模版
- application.properties: 存放項目的配置信息 test目錄存放單元測試代碼,目錄結構與java目錄結構相同。pom.xml用于配置項目依賴包以及其他配置。
pom.xml解析
pom.xml是Maven項目中非常重要的配置文件,我們新建的test項目的pom.xml內容如下:
<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<span class="hljs-name"modelVersion>
<parent>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter-parent<span class="hljs-name"artifactId>
<version>2.6.5<span class="hljs-name"version>
<relativePath/>
<span class="hljs-name"parent>
<groupId>com.qstack<span class="hljs-name"groupId>
<artifactId>test<span class="hljs-name"artifactId>
<version>0.0.1-SNAPSHOT<span class="hljs-name"version>
<name>test<span class="hljs-name"name>
<description>test<span class="hljs-name"description>
<properties>
<java.version>1.8<span class="hljs-name"java.version>
<span class="hljs-name"properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter<span class="hljs-name"artifactId>
<span class="hljs-name"dependency>
<dependency>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter-web<span class="hljs-name"artifactId>
<span class="hljs-name"dependency>
<dependency>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter-test<span class="hljs-name"artifactId>
<scope>test<span class="hljs-name"scope>
<span class="hljs-name"dependency>
<span class="hljs-name"dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-maven-plugin<span class="hljs-name"artifactId>
<span class="hljs-name"plugin>
<span class="hljs-name"plugins>
<span class="hljs-name"build>
<span class="hljs-name"project>
pom.xml主要包含四個部分,下面是 「項目的描述信息」 。groupId是項目的包路徑,artifactId是項目名稱,version是項目版本號,name是項目名稱,descriptoion是項目描述。
<groupId>com.qstack<span class="hljs-name"groupId>
<artifactId>test<span class="hljs-name"artifactId>
<version>0.0.1-SNAPSHOT<span class="hljs-name"version>
<name>test<span class="hljs-name"name>
<description>test<span class="hljs-name"description>
pom.xml還包含 「項目的依賴」 ,項目的依賴信息分為parent和dependencies兩部分,以下是parent部分。parent是配置父級目錄的信息,Maven支持項目的父子結構,引入后會默認繼承父級的配置,此版本引入spring-boot-starter-parent定義Spring Boot的基礎版。
<parent>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter-parent<span class="hljs-name"artifactId>
<version>2.6.5<span class="hljs-name"version>
<relativePath/>
<span class="hljs-name"parent>
dependencies是配置項目所需要的依賴包,Spring Boot體系內依賴組件不需要填寫具體版本號。
<dependencies>
<dependency>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter<span class="hljs-name"artifactId>
<span class="hljs-name"dependency>
<dependency>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter-web<span class="hljs-name"artifactId>
<span class="hljs-name"dependency>
<dependency>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter-test<span class="hljs-name"artifactId>
<scope>test<span class="hljs-name"scope>
<span class="hljs-name"dependency>
<span class="hljs-name"dependencies>
下面是 「項目構建的公共變量」 ,指明了jdk版本。
<properties>
<java.version>1.8<span class="hljs-name"java.version>
<span class="hljs-name"properties>
最后一部分是**「構建配置信息」**
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-maven-plugin<span class="hljs-name"artifactId>
<span class="hljs-name"plugin>
<span class="hljs-name"plugins>
<span class="hljs-name"build>
hello world
首先檢查一下pom.xml中有沒有以下依賴,沒有則加上。
<dependency>
<groupId>org.springframework.boot<span class="hljs-name"groupId>
<artifactId>spring-boot-starter-web<span class="hljs-name"artifactId>
<span class="hljs-name"dependency>
在之前新建的web目錄下新建HelloController如下
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "Hello @Spring Boot!!!";
}
}
然后啟動項目,在瀏覽器輸入http://localhost:8080/hello
-
JAVA
+關注
關注
20文章
2986瀏覽量
107164 -
開發
+關注
關注
0文章
373瀏覽量
41388 -
spring
+關注
關注
0文章
340瀏覽量
14917
發布評論請先 登錄
Spring Boot如何實現異步任務
Gradle構建的多模塊Spring Boot項目

評論