背景
在我看來編程是一棵樹,編程語言就是這棵樹由主干生長出來的樹枝,而各種語言的框架則就像是樹枝上的樹葉,是當(dāng)前這門語言的結(jié)晶,在實(shí)際的生產(chǎn)環(huán)境中扮演著重要角色,學(xué)習(xí)這些框架能夠幫我們真正的具備實(shí)際開發(fā)能力,進(jìn)而找到一份好的工作,有興趣可以看看聊聊自學(xué)編程這篇文章,主要是我對于編程的一些看法,也許會對你有所啟發(fā)。
何為Spring Boot
在說Spring Boot之前先要了解Spring,那么Spring是什么呢?Spring 框架是一個分層的、面向切面的Java應(yīng)用程序的一站式輕量級解決方案,它是Spring技術(shù)棧的核心和基礎(chǔ),是為了解決企業(yè)級應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。我們還是遵循之前所說的學(xué)習(xí)是一新事物時,先要略其大觀,不求甚解。在這里先不管什么分層,面向切面,現(xiàn)在只需要知道Spring是一個Java EE的開發(fā)框架,幫助開發(fā)通俗意義上的Java后端。
那么Spring Boot又是什么呢?Spring Boot是Pivotal團(tuán)隊(duì)在Spring的基礎(chǔ)上提供的一套全新的開源框架,其目的是為了簡化Spring應(yīng)用的搭建和開發(fā)過程。
Spring Boot去除了大量的 XML配置文件,簡化了復(fù)雜的依賴管理。Spring Boot具有Spring一切優(yōu)秀特性,Spring能做的事,Spring Boot都可以做,而且使用更加簡單,功能更加豐富,性能更加穩(wěn)定而健壯。
隨著近些年來微服務(wù)技術(shù)的流行,Spring Boot也成了時下炙手可熱的技術(shù)。Spring Boot集成了大量常用的第三方庫配置,Spring Boot應(yīng)用中這些第三方庫幾乎可以是零配置的開箱即用(out-of-the-box)大部分的 Spring Boot 應(yīng)用都只需要非常少量的配置代碼(基于Java的配置),開發(fā)者能夠更加專注于業(yè)務(wù)邏輯。
由此可以看出Spring Boot是由Spring衍生出的,傳統(tǒng)的Spring框架很多復(fù)雜的配置,而Spring Boot所做的就是使用合理的默認(rèn)值簡化Spring一系列的配置,提高開發(fā)效率,而使用合理的默認(rèn)值就是Spring Boot中核心的設(shè)計(jì)思想“約定優(yōu)于配置”。
上面我們已經(jīng)介紹了什么是Spring,什么是Spring Boot,還是老規(guī)矩why比what更重要,為什么我們需要Spring Boot,它的優(yōu)勢是什么呢?
- 快速構(gòu)建:使用Spring Initializr可以快速創(chuàng)建項(xiàng)目,同時提供了豐富的解決方案,便于快速集成各種解決方案,提升開發(fā)效率。
- 簡化依賴:提供了豐富的Starters,簡化Maven配置,避免版本兼容問題。
- 一鍵部署:內(nèi)嵌Servlet容器,如Tomcat、Jetty,能夠直接打包成可執(zhí)行JAR文件獨(dú)立運(yùn)行,支持Jenkins、Docker,輕松實(shí)現(xiàn)自動化運(yùn)維。
- 應(yīng)用監(jiān)控:自帶Actuator監(jiān)控組件,輕松監(jiān)控服務(wù)的各項(xiàng)狀態(tài)。使用Spring Boot Admin可以輕松部署功能完善的應(yīng)用監(jiān)控體系。
總的來說,Spring Boot讓構(gòu)建、編碼、配置、部署、監(jiān)控都變得非常簡單。
開啟Spring Boot之旅
項(xiàng)目創(chuàng)建
如下圖所示,在IDEA中可以通過Spring Initializr快速創(chuàng)建項(xiàng)目,Group是公司,Artifact是項(xiàng)目名稱,點(diǎn)擊下一步即可創(chuàng)建一個Spring Boot項(xiàng)目。
項(xiàng)目結(jié)構(gòu)
接下來我們看一下新建項(xiàng)目的項(xiàng)目結(jié)構(gòu),如下圖所示
從上面可以看到,我們新建的test項(xiàng)目只有3個主要目錄* src/main/java:程序開發(fā)以及主程序目錄
- src/main/resources:配置文件和資源文件目錄
- src/test/java:測試程序目錄 然而一個完整的項(xiàng)目包括前臺頁面、model實(shí)體、數(shù)據(jù)庫訪問、公共基礎(chǔ)類等非常多的文件和目錄,Spring Boot建議目錄如下圖
如圖中com.qstack.test為根目錄應(yīng)包括:* TestApplication.java:建議放到根目錄下,是項(xiàng)目的啟動類,Spring Boot項(xiàng)目只能有一個main()方法入口。
- comm:建議放置公共的類,如全局的配置文件、工具類等。
- model:主要用于實(shí)體(Entity)。
- repository:主要用于數(shù)據(jù)庫訪問層的代碼
- service:主要是業(yè)務(wù)類代碼
- web:負(fù)責(zé)前臺頁面訪問Controller路由 resources目錄下包括:
- static:存放web訪問的靜態(tài)資源如JS、CSS、圖片等。
- templates:存放頁面模版
- application.properties: 存放項(xiàng)目的配置信息 test目錄存放單元測試代碼,目錄結(jié)構(gòu)與java目錄結(jié)構(gòu)相同。pom.xml用于配置項(xiàng)目依賴包以及其他配置。
pom.xml解析
pom.xml是Maven項(xiàng)目中非常重要的配置文件,我們新建的test項(xiàng)目的pom.xml內(nèi)容如下:
<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主要包含四個部分,下面是 「項(xiàng)目的描述信息」 。groupId是項(xiàng)目的包路徑,artifactId是項(xiàng)目名稱,version是項(xiàng)目版本號,name是項(xiàng)目名稱,descriptoion是項(xiàng)目描述。
<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還包含 「項(xiàng)目的依賴」 ,項(xiàng)目的依賴信息分為parent和dependencies兩部分,以下是parent部分。parent是配置父級目錄的信息,Maven支持項(xiàng)目的父子結(jié)構(gòu),引入后會默認(rèn)繼承父級的配置,此版本引入spring-boot-starter-parent定義Spring Boot的基礎(chǔ)版。
<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是配置項(xiàng)目所需要的依賴包,Spring Boot體系內(nèi)依賴組件不需要填寫具體版本號。
<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>
下面是 「項(xiàng)目構(gòu)建的公共變量」 ,指明了jdk版本。
<properties>
<java.version>1.8<span class="hljs-name"java.version>
<span class="hljs-name"properties>
最后一部分是**「構(gòu)建配置信息」**
<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!!!";
}
}
然后啟動項(xiàng)目,在瀏覽器輸入http://localhost:8080/hello
-
JAVA
+關(guān)注
關(guān)注
19文章
2976瀏覽量
105211 -
開發(fā)
+關(guān)注
關(guān)注
0文章
370瀏覽量
40937 -
spring
+關(guān)注
關(guān)注
0文章
340瀏覽量
14398
發(fā)布評論請先 登錄
相關(guān)推薦
Spring Boot如何實(shí)現(xiàn)異步任務(wù)
Gradle構(gòu)建的多模塊Spring Boot項(xiàng)目
![Gradle構(gòu)建的多模塊<b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b><b class='flag-5'>項(xiàng)目</b>](https://file1.elecfans.com/web2/M00/A6/06/wKgaomURK96AGt0QAAGgG0FMeEk824.jpg)
啟動Spring Boot項(xiàng)目應(yīng)用的三種方法
Spring Boot嵌入式Web容器原理是什么
Spring Boot從零入門1 詳述
「Spring認(rèn)證」什么是Spring GraphQL?
![「<b class='flag-5'>Spring</b>認(rèn)證」什么是<b class='flag-5'>Spring</b> GraphQL?](https://file.elecfans.com//web2/M00/0F/3B/pYYBAGESF82AX69eAAG9KGVFbn4969.jpg)
Spring Boot特有的實(shí)踐
強(qiáng)大的Spring Boot 3.0要來了
怎樣使用Kiuwan保護(hù)Spring Boot應(yīng)用程序呢?
Spring Boot Actuator快速入門
Spring Boot啟動 Eureka流程
![<b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>啟動 Eureka流程](https://file1.elecfans.com/web2/M00/A7/86/wKgaomUkx7OAdMOGAAIBWIj8ao0506.jpg)
Spring Boot的啟動原理
![<b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>的啟動原理](https://file1.elecfans.com/web2/M00/A9/C0/wKgZomUovNCAdZmWAADhZidr2zI277.jpg)
評論