SpringBoot 系列一 : SpringBoot 入門
(點擊
上方公眾號
,可快速關注)
來源:晴楓 ,
shimo.im/docs/EfrRY7W80OcP7GtB
1 SpringBoot HelloWorld
功能:瀏覽器發送 sayHello 請求,伺服器接受請求並處理,響應 Hello。
1.1 創建一個maven工程
<groupId>com.seagetech</groupId>
<artifactId>springboot-helloworld</artifactId>
<version>1.0.0</version>
1.2 下載官方參考文檔
在官網找到相應的下載地址(官網地址:https://spring.io/projects)或者直接使用如下地址下載:https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/pdf/spring-boot-reference.pdf。文檔名稱 「spring-boot-reference.pdf」,版本2.10.RELEASE。
1.3 使用官方參考文檔
Part II. Getting Started > 11. Developing Your First Spring Boot Application。
1.3.1 創建POM
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
</parent>
1.3.2 添加 ClassPath 依賴
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
1.3.3 編寫代碼
創建一個主程序類,類名隨便取。因為我們是做一個 HelloWorld 的項目,所有我們創建一個 HelloWorldApplication 類:
/**
* @auther wangzb
* @date 2018/11/9 21:32
*/
@Controller
@EnableAutoConfiguration
public class HelloWorldApplication {
@RequestMapping(value = "/sayHello")
@ResponseBody
public String sayHello(String name){
return "Hello," + name;
}
public static void main(String[] args) {
SpringApplication.run(HelloWorldApplication.class, args);
}
}
1.3.4 運行例子
啟動 main 方法後,查看 SpringBoot 啟動日誌:
. ____ _ __ _ _
/\ / ___"_ __ _ _(_)_ __ __ _
( ( )\___ | "_ | "_| | "_ / _` |
\/ ___)| |_)| | | | | || (_| | ) ) ) )
" |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.0.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
... Tomcat started on port(s): 8080 (http) with context path ""
... Started HelloWorldApplication in 3.577 seconds (JVM running for 4.446)
可以看到Tomcat的啟動日誌:
Tomcat started on port(s): 8080 (http) with context path 」
即,Tomcat 默認啟動埠為 8080,項目根路徑為 「」,所以在瀏覽器或者 Postman 中輸入地址:http://localhost:8080/sayHello?name=wangzb,瀏覽器或Postman響應:
Hello,wangzb
1.3.5 創建一個可執行的 jar 文件
要創建一個可執行 jar,我們需要將 spring-boot-maven-plugin 添加到我們的 pom.xml 中。在dependencies部分下面插入以下幾行:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
接下來就可以打包,在 Idea 中點擊 package,執行打包命令,之後我們在項目的 target 包下就可以看到剛打包好的 springboot-helloworld-1.0.0.jar 包。在包的路徑下,打開 CMD 命令行,執行如下命令:
$ java -jar springboot-helloworld-1.0.0.jar
. ____ _ __ _ _
/\ / ___"_ __ _ _(_)_ __ __ _
( ( )\___ | "_ | "_| | "_ / _` |
\/ ___)| |_)| | | | | || (_| | ) ) ) )
" |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.0.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)
要退出應用程序,請按 Ctrl+c 或者直接關閉命令窗口,再次在瀏覽器中訪問上面地址,發現鏈接已不能再訪問,如果在 Linux 系統中,且要後台長期運行,可以在命令後加&符號,即:
java -jar springboot-helloworld-1.0.0.jar &
2 HelloWorld探究
2.1 使用IntelliJ IDEA快速創建SpringBoot項目
1) 新建項目
2) 左邊菜單選擇 Spring Initializr,右邊菜單選擇 JDK 版本,然後點擊Next
3) 填寫 Maven 坐標 GroupId/ArtifactId、打包形式(本例使用Jar的方式,war包形式請看後續文章)、項目名稱/版本等基本信息,然後點擊Next
4) 選擇 SpringBoot 版本,以及需要依賴的包,這裡我們選擇最新版2.1.0,導入Web模塊依賴包,點擊Next
5) 修改項目名稱以及項目存放路徑,默認即可,點擊 Finish
2.2 SpringBoot項目結構分析
通過 2.1 的講解,我們熟悉了如何快速創建 SpringBoot 項目。接下來分析 SpringBoot 項目結構,上節中創建好的 SpringBoot 項目結構如下:
2.2.1 pom.xml文件
2.2.1.1 父項目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
按住Ctrl,點擊 spring-boot-starter-parent 進入 spring-boot-starter-parent 項目,它的父項目是:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
如上,可以看到 spring-boot-dependencies。它是真正管理 SpringBoot 項目所有依賴版本,是 Spring Boot 的版本仲裁中心,以後我們導入依賴默認是不需要寫版本(沒有在 dependencies 裡面管理的依賴自然需要聲明版本號)。
2.2.1.2 啟動器(Starter)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter:spring-boot 場景啟動器。幫我們導入了 Web 模塊正常運行所依賴的組件。Spring Boot 將所有的功能場景都抽取出來,做成許多啟動器(starter),只需要在項目裡面引入這些啟動器,相關場景的所有依賴都會導入進來。要用什麼功能就導入什麼場景的啟動器。
1) 以下列舉 SpringBoot 官方提供的 starter pom
更多請參考 「spring-boot-reference.pdf」 2.1.0.RELEASE,13.5節Starters。
2) 除了官方的 starter pom 外,還有第三方為 SpringBoot 所寫的 starter pom
如下表所示:
2.2.2 resources文件目錄結構
static:保存所有的靜態資源,如 js、css、images 等。
templates:保存所有的模板文件,SpringBoot 默認 jar 使用嵌入式的 Tomcat,默認不支持 JSP 頁面,可以使用模板引擎(Thymeleaf、Freemarker )。
application.properties:SpringBoot 應用配置文件,可以修改一些默認的配置,如修改 Tomcat 埠,項目根路徑等。
2.2.3 主程序類
打開2.1節創建的 springboot-demo 項目,找到 SpringBootDemoApplication 類:
package com.seagetech.springbootdemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemoApplication.class, args);
}
}
基本和1.3.3節創建的主程序類一樣,main 方法加註解的形式,不同的是,Idea 創建的主程序類使用的是 @SpringBootApplication 註解,它是 SpringBoot 的核心註解,也是一個組合註解,打開這個註解,源碼如下:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
@SpringBootApplication 註解的核心功能其實是:@SpringBootConfiguration、@EnableAutoConfigration、@ComponentScan 三個註解提供。
【關於投稿】
如果大家有原創好文投稿,請直接給公號發送留言。
① 留言格式:
【投稿】+《 文章標題》+ 文章鏈接
② 示例:
【投稿】《不要自稱是程序員,我十多年的 IT 職場總結》:http://blog.jobbole.com/94148/
③ 最後請附上您的個人簡介哈~
看完本文有收穫?請轉發分享給更多人
關注「ImportNew」,提升Java技能
TAG:ImportNew |