Spring Boot 入門程序

1 SpringBoot HelloWorld

功能:瀏覽器發(fā)送 sayHello 請(qǐng)求,服務(wù)器接受請(qǐng)求并處理,響應(yīng) Hello。

1.1 創(chuàng)建一個(gè)maven工程

<groupId>com.seagetech</groupId>

<artifactId>springboot-helloworld</artifactId>

<version>1.0.0</version>

1.2 下載官方參考文檔

在官網(wǎng)找到相應(yīng)的下載地址(官網(wǎng)地址: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 創(chuàng)建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 編寫代碼

創(chuàng)建一個(gè)主程序類,類名隨便取。因?yàn)槲覀兪亲鲆粋€(gè) HelloWorld 的項(xiàng)目,所有我們創(chuàng)建一個(gè) HelloWorldApplication 類:

 @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 運(yùn)行例子

啟動(dòng) main 方法后,查看 SpringBoot 啟動(dòng)日志:

可以看到Tomcat的啟動(dòng)日志:

Tomcat started on port(s): 8080 (http) with context path ”

即,Tomcat 默認(rèn)啟動(dòng)端口為 8080,項(xiàng)目根路徑為 “”,所以在瀏覽器或者 Postman 中輸入地址:http://localhost:8080/sayHello?name=wangzb,瀏覽器或Postman響應(yīng):

 Hello,wangzb

1.3.5 創(chuàng)建一個(gè)可執(zhí)行的 jar 文件

要?jiǎng)?chuàng)建一個(gè)可執(zhí)行 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 中點(diǎn)擊 package,執(zhí)行打包命令,之后我們在項(xiàng)目的 target 包下就可以看到剛打包好的 springboot-helloworld-1.0.0.jar 包。

2 HelloWorld探究

2.1 使用IntelliJ IDEA快速創(chuàng)建SpringBoot項(xiàng)目

  1. 新建項(xiàng)目
image
  1. 左邊菜單選擇 Spring Initializr,右邊菜單選擇 JDK 版本,然后點(diǎn)擊Next
image
  1. 填寫 Maven 坐標(biāo) GroupId/ArtifactId、打包形式(本例使用Jar的方式,war包形式請(qǐng)看后續(xù)文章)、項(xiàng)目名稱/版本等基本信息,然后點(diǎn)擊Next
image
  1. 選擇 SpringBoot 版本,以及需要依賴的包,這里我們選擇最新版2.1.0,導(dǎo)入Web模塊依賴包,點(diǎn)擊Next
image
  1. 修改項(xiàng)目名稱以及項(xiàng)目存放路徑,默認(rèn)即可,點(diǎn)擊 Finish
image

2.2 SpringBoot項(xiàng)目結(jié)構(gòu)分析

通過 2.1 的講解,我們熟悉了如何快速創(chuàng)建 SpringBoot 項(xiàng)目。接下來分析 SpringBoot 項(xiàng)目結(jié)構(gòu),上節(jié)中創(chuàng)建好的 SpringBoot 項(xiàng)目結(jié)構(gòu)如下:

image

2.2.1 pom.xml文件

2.2.1.1 父項(xiàng)目

<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,點(diǎn)擊 spring-boot-starter-parent 進(jìn)入 spring-boot-starter-parent 項(xiàng)目,它的父項(xiàng)目是:

 <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 項(xiàng)目所有依賴版本,是 Spring Boot 的版本仲裁中心,以后我們導(dǎo)入依賴默認(rèn)是不需要寫版本(沒有在 dependencies 里面管理的依賴自然需要聲明版本號(hào))。

2.2.1.2 啟動(dòng)器(Starter)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId> 
 </dependency>

spring-boot-starter:spring-boot 場景啟動(dòng)器。幫我們導(dǎo)入了 Web 模塊正常運(yùn)行所依賴的組件。Spring Boot 將所有的功能場景都抽取出來,做成許多啟動(dòng)器(starter),只需要在項(xiàng)目里面引入這些啟動(dòng)器,相關(guān)場景的所有依賴都會(huì)導(dǎo)入進(jìn)來。要用什么功能就導(dǎo)入什么場景的啟動(dòng)器。

  1. 以下列舉 SpringBoot 官方提供的 starter pom

更多請(qǐng)參考 “spring-boot-reference.pdf” 2.1.0.RELEASE,13.5節(jié)Starters。

image
  1. 除了官方的 starter pom 外,還有第三方為 SpringBoot 所寫的 starter pom

如下表所示:

image

2.2.2 resources文件目錄結(jié)構(gòu)

static:保存所有的靜態(tài)資源,如 js、css、images 等。

templates:保存所有的模板文件,SpringBoot 默認(rèn) jar 使用嵌入式的 Tomcat,默認(rèn)不支持 JSP 頁面,可以使用模板引擎(Thymeleaf、Freemarker )。

application.properties:SpringBoot 應(yīng)用配置文件,可以修改一些默認(rèn)的配置,如修改 Tomcat 端口,項(xiàng)目根路徑等。

2.2.3 主程序類

打開2.1節(jié)創(chuàng)建的 springboot-demo 項(xiàng)目,找到 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節(jié)創(chuàng)建的主程序類一樣,main 方法加注解的形式,不同的是,Idea 創(chuàng)建的主程序類使用的是 @SpringBootApplication 注解,它是 SpringBoot 的核心注解,也是一個(gè)組合注解,打開這個(gè)注解,源碼如下:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
 @Documented
 @Inherited
 @SpringBootConfiguration
 @EnableAutoConfiguration
 @ComponentScan

@SpringBootApplication 注解的核心功能其實(shí)是:@SpringBootConfiguration、@EnableAutoConfigration、@ComponentScan 三個(gè)注解提供。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容