什么是Spring Boot
Spring Boot 是 Spring 開源組織下的一個(gè)子項(xiàng)目,也是 Spring 組件一站式解決方案,主要是為了簡化使用 Spring 框架的難度和簡化 Spring 框架復(fù)雜的XML配置。使用 Spring Boot 可以很容易創(chuàng)建一個(gè)獨(dú)立運(yùn)行的、基于 Spring 的生產(chǎn)級應(yīng)用程序,而且Spring Boot 對 Spring 平臺和第三方庫做了一些版本適配,這樣我們就可以盡快的上手。
使用 Spring Boot 來不僅可以創(chuàng)建基于 war 方式部署的傳統(tǒng)Java應(yīng)用程序,也可以通過創(chuàng)建獨(dú)立的不依賴任何容器(如 tomcat 等)的應(yīng)用,只需使用 “java -jar” 就能啟動(dòng)。Spring Boot 還提供了一個(gè)運(yùn)行 "spring scripts " 的命令行工具。
Spring Boot 的設(shè)計(jì)目標(biāo)
為所有的 Spring 開發(fā)提供一個(gè)從根本上更快、更廣泛的入門體驗(yàn)。
開箱即用,但當(dāng)需求開始偏離默認(rèn)值時(shí),可以快速從中解放出來使用個(gè)性化的定制。
提供一系列大型應(yīng)用項(xiàng)目中經(jīng)常用到的公共的非功能特性(如嵌入式服務(wù)器、安全、度量、健康檢查和外部化配置)。
零代碼生成零XML配置。
第一個(gè) Spring Boot 應(yīng)用程序
我們在學(xué)習(xí)一門新的開發(fā)語言,或者開發(fā)框架的時(shí)候,一般都習(xí)慣寫個(gè) Hello World 的項(xiàng)目。一方面可以驗(yàn)證基礎(chǔ)環(huán)境的搭建是否正確,另一方面可以快速了解整個(gè)開發(fā)流程。現(xiàn)在我們創(chuàng)建一個(gè) Hello world 的 Spring Boot 項(xiàng)目。我這里使用的IDE 是 Intellij IDEA 。
第一步
打開Intellij IDEA 使用 Spring Initializr 向?qū)?新建 Hello World的項(xiàng)目
選擇 Spring Web, 然后點(diǎn)擊 Finish 等待項(xiàng)目創(chuàng)建完成。
第二步
項(xiàng)目已經(jīng)創(chuàng)建完成。下面我們來看一下項(xiàng)目結(jié)構(gòu):
來看下 HelloApplication 入口類的內(nèi)容, HelloApplication 里面定義了一個(gè) main 函數(shù),一個(gè)基本的 @SpringBootApplication 注解。后續(xù)的文章會(huì)詳細(xì)解釋一下 @SpringBootApplication 注解。現(xiàn)在我們只要知道有了 @SpringBootApplication 注解,所有的 Spring Boot 項(xiàng)目依賴都可以掃描加入進(jìn)來。
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
再看一下 pom.xml 文件有那些依賴項(xiàng)目, POM 文件主要依賴了spring-boot-starter-web 項(xiàng)目,該項(xiàng)目包含了 web 項(xiàng)目所需的相關(guān)依賴,包括內(nèi)置了 tomcat 服務(wù)器。另外還有一個(gè)比較重要的插件 spring-boot-maven-plugin,方便我們可以對 Spring Boot 項(xiàng)目打包成一個(gè)獨(dú)立運(yùn)行的 jar 包。
< ?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 >
< parent >
< groupId >org.springframework.boot< /groupId >
< artifactId >spring-boot-starter-parent< /artifactId >
< version >2.5.0< /version >
< relativePath/ > < !-- lookup parent from repository -- >
< /parent >
< groupId >com.javanorth< /groupId >
< artifactId >hello< /artifactId >
< version >0.0.1-SNAPSHOT< /version >
< name >hello< /name >
< description >Demo project for Spring Boot< /description >
< properties >
< java.version >1.8< /java.version >
< /properties >
< dependencies >
< dependency >
< groupId >org.springframework.boot< /groupId >
< artifactId >spring-boot-starter-web< /artifactId >
< /dependency >
< dependency >
< groupId >org.springframework.boot< /groupId >
< artifactId >spring-boot-starter-test< /artifactId >
< scope >test< /scope >
< /dependency >
< /dependencies >
< build >
< plugins >
< plugin >
< groupId >org.springframework.boot< /groupId >
< artifactId >spring-boot-maven-plugin< /artifactId >
< /plugin >
< /plugins >
< /build >
< /project >
第三步
修改 HelloApplication 主類,添加一個(gè)/hello 的請求
@RestController
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
@GetMapping("/hello")
public String hello() {
return "Hello World";
}
}
第四步
在主類上,右鍵菜單欄里選擇 Run “HelloApplication” 命令,啟動(dòng)項(xiàng)目。如下圖所示,2秒鐘就能啟動(dòng)完成。從輸出日志可以看出,項(xiàng)目啟動(dòng)了內(nèi)置的 tomcat 服務(wù)器,分配了8080 作為本次 web 服務(wù)器的請求端口。
好了,我們現(xiàn)在訪問一下 /hello 請求, 如下圖所示,輸出了 Hello World。
是不是很簡單,我們很快就上手完成了第一個(gè) Hello World 應(yīng)用。
第五步
我們再來看下,如何打包一個(gè) Spring Boot 項(xiàng)目呢?前文我們已經(jīng)提到了 spring-boot-maven-plugin 插件,所以我們可以使用mvn package 來對其進(jìn)行打包
$ mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------< com.javanorth:hello >-------------------------
[INFO] Building hello 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] ...
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ hello ---
[INFO] Building jar: /Users/wbf/Documents/javanorth/target/hello-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.5.0:repackage (repackage) @ hello ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.065 s
[INFO] Finished at: 2021-05-27T16:33:17+08:00
[INFO] ------------------------------------------------------------------------
打包完成,查看 target 目錄,我們能看到 hello-0.0.1-SNAPSHOT.jar 文件。
從上圖可以看到有個(gè)名字相類似的文件,hello-0.0.1-SNAPSHOT.jar.original 文件是 Spring Boot repackage 之前的文件,也就是說這個(gè)文件其實(shí)就是 maven 創(chuàng)建的原始jar文件,不包含其他依賴的jar包。
如果我們想看一下 hello-0.0.1-SNAPSHOT.jar 里面包含那些內(nèi)容,有沒有什么快速的辦法呢,我這里給大家提供一個(gè)命令行的方法,使用 “jar tvf ” 就行。
jar tvf hello-0.0.1-SNAPSHOT.jar
小結(jié)
從上面的示例可以看出開始一個(gè)新的 Spring Boot 項(xiàng)目非常簡單,Spring Boot 提供了專門的創(chuàng)建向?qū)ы?xiàng)目,簡化了大量的 Spring 項(xiàng)目的創(chuàng)建難度。全程下來不到5分鐘,我們就完成了項(xiàng)目的創(chuàng)建和 hello world 的輸出演示。
-
JAVA
+關(guān)注
關(guān)注
19文章
2966瀏覽量
104702 -
開源
+關(guān)注
關(guān)注
3文章
3309瀏覽量
42471 -
應(yīng)用程序
+關(guān)注
關(guān)注
37文章
3265瀏覽量
57677 -
SpringBoot
+關(guān)注
關(guān)注
0文章
173瀏覽量
177
發(fā)布評論請先 登錄
相關(guān)推薦
評論