1. 程式人生 > >spring boot 學習筆記 (2) Spring Boot 依賴環境和專案結構介紹

spring boot 學習筆記 (2) Spring Boot 依賴環境和專案結構介紹

使用 Spring Boot 開發專案需要有兩個基礎環境和一個開發工具,這兩個環境是指 Java 編譯環境和構建工具環境,一個開發工具是指 IDE 開發工具。

Spring Boot 2.0 要求 Java 8 作為最低版本,需要在本機安裝 JDK 1.8 並進行環境變數配置,同時需要安裝構建工具編譯 Spring Boot 專案,最後準備一個順手的 IDE 開發工具即可。

構建工具是一個把原始碼生成可執行應用程式的自動化工具,Java 領域中主要有三大構建工具:Ant、Maven 和 Gradle。

Java 領域最流行的 IDE 開發工具有 Eclipse 和 IDEA。Eclipse 是 Java 的整合開發環境(IDE),也是 Java 領域最流行的 IDE 開發工具之一,只是 Eclipse 這些年發展緩慢,慢慢的有些陳舊。IDEA(IntelliJ IDEA)是用於 Java 語言開發的整合環境,在業界被公認為是最好的 Java 開發工具之一,尤其在智慧程式碼助手、程式碼自動提示、重構、J2EE 支援、創新的 GUI 設計等方面的功能可以說是超常的。因此強烈推薦大家使用 IntelliJ IDEA 開發 Spring Boot 專案。

接下來將介紹如何搭建基礎環境以及 IntelliJ IDEA 的安裝。

安裝 JDK

下載安裝

首先開啟 Oracle 官網 JDK 1.8 下載頁面,根據下圖選擇下載各系統對應的版本。 具體操作不做詳解

 

安裝 Maven

安裝 Maven 的前提是完成 Java 環境安裝,Maven 依賴於 Java 環境。

下載安裝( 具體操作不做詳解)

settings.xml 設定

Maven 解壓後目錄下會有一個 settings.xml 檔案,位置:${M2_HOME}/conf/settings.xml,用來配置 Maven 的倉庫和本地 Jar 包儲存地址。Maven 倉庫地址代表從哪裡去下載專案中的依賴包 Jar 包;Maven 會將所有的 Jar 包統一儲存到一個地址下,方便各個專案複用。

localRepository 設定本地存放 Jar 包地址,可以根據自己的情況改動:

<localRepository>D:\Common Files\maven\repository</localRepository>

mirrors 為倉庫列表配置的下載映象列表:

<mirrors>
    <mirror>  
        <id>repo2</id>  
        <mirrorOf>central</mirrorOf>  
        <name>spring2.0 for this Mirror.</name>  
        <url>https://repo.spring.io/libs-milestone</url>  
    </mirror>
    ...
<mirrors>

 模板 settings.xml 檔案地址,詳見這裡。(需要修改 localRepository 路徑。)

IntelliJ IDEA 安裝

 IntelliJ IDEA 2018 官方下載地址,IDEA 分為兩種版本,即社群版和商業版,商業版是付費的,其功能多,社群版是免費的,功能相對較少。 

 

構建專案

我們有兩種方式來構建 Spring Boot 專案基礎框架,第一種是使用 Spring 官方提供的構建頁面;第二種是使用 IntelliJ IDEA 中的 Spring 外掛來建立。

使用 Spring 官方提供頁面構建

  • 訪問 http://start.spring.io/ 網址。
  • 選擇構建工具 Maven Project,程式語言選擇 Java、Spring Boot 版本 2.0.5 以及一些工程基本資訊,具體可參考下圖。

  • 單擊 Generate Project 下載專案壓縮包。
  • 解壓後,使用 IDEA 匯入專案,選擇 File | New | Model from Existing Source.. | 選擇解壓後的資料夾 | OK 命令,選擇 Maven,一路單擊 Next 按鈕,OK done!
  • 如果使用的是 Eclipse,選擇 Import | Existing Maven Projects | Next | 選擇解壓後的資料夾 | Finsh 按鈕,OK done!

使用 IDEA 構建

  • 選擇 File | New | Project... 命令,彈出新建專案的對話方塊。
  • 選擇 Spring Initializr,Next 也會出現上述類似的配置介面,IDEA 幫我們做了整合。

  • 填寫相關內容後,單擊 Next 按鈕,選擇依賴的包再單擊 Next 按鈕,最後確定資訊無誤單擊 Finish 按鈕。

對上面的配置做如下解釋。

  • 第一個選擇框選擇建立以 Maven 構建專案,還是以 Gradle 構建專案,這是兩種不同的構建方式,其中 Gradle 配置內容更簡潔一些,並且包含了 maven 的使用,但我們日常使用 maven 居多。
  • 第二個選擇框選擇程式語言,現在支援 Java、Kotlin 和 Groovy。
  • 第三個選擇框選擇 Spring Boot 版本,可以看出 Spring Boot 2.0 的最新版本是 2.0.5。 
  • Dependencies,在這塊新增我們專案所依賴的 Spring Boot 元件,可以多選,本次選擇 Web、Devtools 兩個模組。

 

專案結構介紹

avatar

如上圖所示,Spring Boot 的基礎結構共三個檔案,具體如下:

  • src/main/java:程式開發以及主程式入口;
  • src/main/resources:配置檔案;
  • src/test/java:測試程式。

另外,Spring Boot 建議的目錄結構如下。

com.example.myproject 目錄下:

myproject
 +-src
    +- main
         +- java
              +- com.example.myproject
                    +- comm
                    +- model
                    +- repository
                    +- service
                    +- web
                    +- Application.java
         +- resources
              +- static
              +- templates
              +- application.properties
    +- test
 +-pom.xml

com.example.myproject 目錄下:

  • Application.java,建議放到根目錄下面,是專案的啟動類,Spring Boot 專案只能有一個 main() 方法;
  • comm 目錄建議放置公共的類,如全域性的配置檔案、工具類等;
  • model 目錄主要用於實體(Entity)與資料訪問層(Repository);
  • repository 層主要是資料庫訪問層程式碼;
  • service 層主要是業務類程式碼;
  • web 層負責頁面訪問控制。

resources 目錄下:

  • static 目錄存放 web 訪問的靜態資源,如 js、css、圖片等;
  • templates 目錄存放頁面模板;
  • application.properties 存放專案的配置資訊。

test 目錄存放單元測試的程式碼;pom.xml 用於配置專案依賴包,以及其他配置。

採用預設配置可以省去很多設定,也可以根據公司的規範進行修改,至此一個 Java 專案搭建好了!

Pom 包介紹

pom.xml 檔案主要描述了專案包的依賴和專案構建時的配置,在預設的 pom.xml 包中分為五大塊。

第一部分為專案的描述資訊:

<groupId>com.neo</groupId>
<artifactId>hello</artifactId>
<version>2.0.5.RELEASE</version>
<packaging>jar</packaging>

<name>hello</name>
<description>Demo project for Spring Boot</description>
  • groupId,專案的包路徑;
  • artifactId,專案名稱;
  • version,專案版本號;
  • packaging,一般有兩個值:jar、war,表示使用 Maven 打包時構建成 Jar 包還是 War 包;
  • name,專案名稱;
  • description,專案描述。

第二部分為專案的依賴配置資訊:

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.0.5.RELEASE</version>
  <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
</dependencies>
  • parent,標籤內配置 Spring Boot 父級版本 spring-boot-starter-parent,Maven 支援專案的父子結構,引入父級後會預設繼承父級的配置;
  • dependencies,標籤內配置專案所需要的依賴包,Spring Boot 體系內的依賴元件不需要填寫具體版本號,spring-boot-starter-parent 維護了體系內所有依賴包的版本資訊。

第三部分為構建時需要的公共變數:

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  <java.version>1.8</java.version>
</properties>

上面配置了專案構建時所使用的編碼,輸出所使用的編碼,最後指定了專案使用的 JDK 版本。

第四部分為構建配置:

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

使用 Maven 構建 Spring Boot 專案必須依賴於 spring-boot-maven-plugin 元件,spring-boot-maven-plugin 能夠以 Maven 的方式為應用提供 Spring Boot 的支援,即為 Spring Boot 應用提供了執行 Maven 操作的可能。spring-boot-maven-plugin 能夠將 Spring Boot 應用打包為可執行的 jar 或 war 檔案,然後以簡單的方式執行 Spring Boot 應用。

以上即為 pom.xml 檔案基礎內容,幾乎所有的 Spring Boot 專案都會用到以上配置資訊。

 

對比

我們簡單做一下對比,使用 Spring Boot 之前和使用之後。

使用 Spring Boot 之前:

  • 配置 web.xml,載入 Spring 和 Spring MVC
  • 配置資料庫連線、配置 Spring 事務
  • 配置載入配置檔案的讀取,開啟註解
  • 配置日誌檔案
  • 配置完成之後部署 Tomcat 除錯

現在非常流行微服務,如果專案只是簡單傳送郵件的需求,我們也需要這樣操作一遍。

使用 Spring Boot 之後,僅僅三步即可快速搭建起一個 Web 專案:

  • 頁面配置匯入到開發工具中
  • 進行程式碼編寫
  • 執行

通過對比可以發現 Spring Boot 在開發階段做了大量優化,非常容易快速構建一個專案。

 

 

總結

這一課我們介紹了 Spring Boot 所依賴的基礎環境,如何去搭建 JDK、Maven 環境,安裝開發工具 IDEA;對 Spring Boot 專案結構進行了解讀,介紹了 pom.xml 檔案內容的含義。通過本課的學習,我們發現構建 Spring Boot 專案更簡單方便,相比傳統專案,Spring Boot 專案配置更加靈活。

參考文章    純潔的微笑  https://gitbook.cn/gitchat/column/5b86228ce15aa17d68b5b55a/topic/5ba8556f0110e7701d25dd95