當前位置:
首頁 > 知識 > SpringBoot 系列一 : SpringBoot 入門

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技能


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 ImportNew 的精彩文章:

按鈕條件邏輯配置化的可選技術方案

TAG:ImportNew |