1. 程式人生 > >001SpringBoot構建專案

001SpringBoot構建專案

有兩種方式來構建 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。

下面就是專案的配置資訊了。

  • Group,一般填寫公司域名,比如百度公司就會填:com.baidu,演示使用 com.neo。
  • Artifact,可以理解為專案的名稱了,可以根據實際情況來填,本次演示填 hello。
  • 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 維護了體系內所有依賴包的版本資訊。
  • <scope>test</scope>,表示依賴的元件僅僅參與測試相關的工作,包括測試程式碼的編譯和執行,不會被打包包含進去;
  • spring-boot-starter-test 是 Spring Boot 提供專案測試的工具包,內建了多種測試工具,方便我們在專案中做單元測試、整合測試。

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

<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 專案都會用到以上配置資訊。

完整的pomp檔案

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mystudy</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</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>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <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-devtools</artifactId>
            <scope>runtime</scope>
        </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>